美文网首页
es6同步执行循环内的异步方法

es6同步执行循环内的异步方法

作者: 此昵称已被狗抢占 | 来源:发表于2018-05-03 00:04 被阅读0次
    /* 同步 */
    function asyncFunction(i) {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                console.log(i);
                resolve(i);
            }, 2000 * Math.random())
        });
    }
    
    let i = 0;
    let promise = Promise.resolve(i - 1);
    while (i++ < 10) {
        promise = promise.then((result) => asyncFunction(result + 1));
    }
    
    // 结果
    // 0
    // 1
    // 2
    // 3
    // 4
    // 5
    // 6
    // 7
    // 8
    // 9
    
    /* 异步 */
    function asyncFunction(i) {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                console.log(i);
                resolve(i);
            }, 2000 * Math.random())
        });
    }
    
    let i = 0;
    while (i < 10) {
        asyncFunction(i++);
    }
    
    // 结果不可确定
    // 0
    // 2
    // 6
    // 5
    // 1
    // 4
    // 7
    // 8
    // 9
    // 3
    

    相关文章

      网友评论

          本文标题:es6同步执行循环内的异步方法

          本文链接:https://www.haomeiwen.com/subject/kwvhrftx.html