i = 0; b = 0; c = 0; function saveData(key) { var promise = new Promise(function (resolve) { resolve(key); }); return promise; } for (var a = 0; a < 5;a++) { saveData(a).then(function (result) { b = result; c++ }); if (i == 4) { return "i=" + i + " " + "b=" + b + " " + "c=" + c+" "; } i++ }
结果:
then 中的函数是异步执行的,也就是说,这些函数没有执行完,i++ 就执行了,遍历的下一步就开始了,到 i == 4 的时候直接返回结果了。
i++
i == 4
您可以找一些 promise 相关的资料看一下。另外也推荐用 async 和 await,风格比较接近同步编程。
async
await