hw 14 answers - garevna/js-course GitHub Wiki

:one:

Используя асинхронную функцию, напилить код функции printString, выводящей строку на страницу по 1 символу в секунду

function printString ( text, container ) {
    printLetter = ( letter, index ) => new Promise (
        resolve => setTimeout (
            () => resolve ( letter ),
            1000*index
        )
    )
    let demo = container && container.nodeType === 1 ?
        container : document.body.appendChild (
            document.createElement ( "div" )
        )
    text.split("")
        .forEach (
            async ( letter, index ) => demo.appendChild (
                document.createTextNode(
                    await printLetter ( letter, index )
                )
            )
        )
}

:three:

Напилить код функции printString, выводящей строку на страницу по 1 символу в секунду, используя анонимную асинхронную рекурсивную функцию, IIFE

function printString ( text, container ) {
    printLetter = ( letter, index ) => new Promise (
        resolve => setTimeout (
            () => resolve ( letter ),
            1000*index
        )
    )
    let demo = container && container.nodeType === 1 ?
        container : document.body.appendChild (
            document.createElement ( "div" )
        )
    let tmp = text.split("")
    let index = 0;
    ( async function () {
        demo.appendChild ( document.createTextNode(
            await printLetter ( tmp.shift(), index++ )
        ))
        while ( tmp.length ) arguments.callee ()
    })()
}