美文网首页
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