hw 11 answers - garevna/js-course GitHub Wiki

:one:

simple

:two:

var messages = [
    "backspace",
    "enter",
    "shift",
    "control",
    "delete",
    "space",
    "subtract"
]

messages.getKey = () => {
    var key = new Date().toLocaleString().split(", ")[1]
    return log [ key ] ? log [ key + "[2]" ] ? key + "[3]" : key + "[2]" : key
}

var log = {}

var sendMessage = message => new Promise (
    resolve => setTimeout (
        () => resolve ( message ),
        Math.random () * 7000
    )
)

messages.forEach (
    ( message, index, arr ) => sendMessage ( message )
        .then (
            mess => Object.assign ( log,
                { [ arr.getKey() ] : message }
            )
        )
)

:three:

var messages = [
    "backspace",
    "enter",
    "shift",
    "control",
    "delete",
    "space",
    "subtract"
]

messages.getKey = () => new Date().toLocaleString().split(", ")[1]

var log = {}

var sendMessage = message => new Promise (
    resolve => setTimeout (
        () => resolve ( message ),
        Math.random () * 5000
    )
)

var sendAll = () => {
    var index = 0
    function recursive () {
        sendMessage ( messages [ index++ ] )
            .then (
                response => {
                    if ( !response ) return
                    Object.assign ( log,
                        { [ messages.getKey() ] : response }
                    )
                    recursive ()
                }
            )
    }
    recursive ()
}

sendAll()