【发布时间】:2021-03-30 05:25:21
【问题描述】:
我有一个循环,它调用一个异步执行操作的方法。这个循环可以多次调用该方法。在这个循环之后,我有另一个循环,只有在所有异步内容都完成后才需要执行。
所以这说明了我想要什么:
for (i = 0; i < 5; i++) {
doSomeAsyncStuff();
}
for (i = 0; i < 5; i++) {
doSomeStuffOnlyWhenTheAsyncStuffIsFinish();
}
我对 Promise 不是很熟悉,有谁能帮我实现这个吗?
这就是我的doSomeAsyncStuff() 的行为方式:
function doSomeAsyncStuff() {
var editor = generateCKEditor();
editor.on('instanceReady', function(evt) {
doSomeStuff();
// There should be the resolve() of the promises I think.
})
}
也许我必须这样做:
function doSomeAsyncStuff() {
var editor = generateCKEditor();
return new Promise(function(resolve,refuse) {
editor.on('instanceReady', function(evt) {
doSomeStuff();
resolve(true);
});
});
}
但我不确定语法。
【问题讨论】:
-
您能控制异步调用吗?他们是否已经返回承诺,或者你可以让他们返回承诺?
-
顺序到底是什么? all 之前的异步函数完成后是否需要调用其他函数?还是只需要在每个异步完成后调用一个函数?
-
目前第一个函数不返回承诺。我必须执行。我想编辑我的消息以添加我的功能工作流程的一些细节。是的,我需要在开始执行第二个循环中的内容之前完成第一个循环的所有内容。
-
重新编辑:“也许我必须做类似的事情” 是的,非常类似,只是
Promise的末尾没有s。
标签: javascript asynchronous ecmascript-6 promise es6-promise