我有一个循环调用一个异步执行的方法.这个循环可以多次调用该方法.在这个循环之后,我有另一个循环,只有在完成所有异步操作后才需要执行.所以这说明了我的愿望:
for (i = 0; i < 5; i++) {
doSomeAsyncStuff();
}
for (i = 0; i < 5; i++) {
doSomeStuffOnlyWhenTheAsyncStuffIsFinish();
}
Run Code Online (Sandbox Code Playgroud)
我对承诺并不熟悉,所以有人能帮助我实现这一目标吗?
这是我的doSomeAsyncStuff()
表现:
function doSomeAsyncStuff() {
var editor = generateCKEditor();
editor.on('instanceReady', function(evt) {
doSomeStuff();
// There should be the resolve() of the promises I think.
})
}
Run Code Online (Sandbox Code Playgroud)
也许我必须做那样的事情:
function doSomeAsyncStuff() {
var editor = generateCKEditor();
return new Promise(function(resolve,refuse) {
editor.on('instanceReady', function(evt) {
doSomeStuff();
resolve(true);
});
});
}
Run Code Online (Sandbox Code Playgroud)
但我不确定语法.
我的网站上有代码,使用 SweetAlert2 弹出窗口让用户请求歌曲:
$('#request-song').click(async function() {
const { value: song } = await swal({
title: "Request a Song (please note song request won't be played unless we are live)",
input: 'text',
inputPlaceholder: 'Enter Artist - Song Name',
});
if (song) {
$.post("functions/request.php", {request: song}, function(data) {
console.log(data);
});
swal({type: 'success', title: 'Success!'});
}
});
Run Code Online (Sandbox Code Playgroud)
但是当我添加另一个输入时,它只会读取第二个输入。如何添加另一个输入,以便听众可以在喊话中包含他们的姓名/用户名?