async function f1(){
await setTimeout(()=>{
console.log('2');
},3000);
}
console.log('1');
f1();
console.log('3');
结果是:
1
3
2
明明我上面已经声明f1为同步的了,为何最后一个3不等f1函数执行完就跳出来了?
我想要得到的结果是:
1
2
3
首先你对 f1
函数的定义是有问题的,需要稍加修改,
function f1() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('2');
resolve();
}, 3000)
});
}
其次,调用异步函数并需要等待时需要添加 await
语法糖
(async () => {
console.log('1');
await f1();
console.log('3');
})();
(async () => {
function f1() {
return new Promise(resolve => {
setTimeout(() => {
console.log("2");
resolve();
}, 3000);
});
}
console.log('1');
await f1();
console.log('3');
})();
async function f1(){
await new Promise((r)=>{
setTimeout(()=>{
console.log('2');
r()
},3000)
});
}
;(async ()=>{
console.log('1');
await f1();
console.log('3');
})()
function delay(interval) {
return new Promise(resolve => setTimeout(resolve, interval));
}
async function f1(){
await delay(3000);
console.log('2');
}
console.log('1');
await f1();
console.log('3');
这样不仅清晰易读,也更加符合 异步编程范式
问题内容: 如果我需要一个接一个地调用此函数, 我知道在jQuery中我可以做类似的事情: 但是,假设我没有使用jQuery,而是要调用: 我应该如何调用此函数以便执行,然后在调用结束后执行,然后执行,然后在调用结束后再调用? 更新: 这仍然无法正常工作: 三个动画同时开始 我的错误在哪里? 问题答案: 在Javascript中,有 同步 和 异步 功能。 同步功能 Javascript中的大多数
我是JavaScript和React的新手,我正试图远离教程,所以为了自己的学习利益,我开始制作一个简单的应用程序,但遇到了功能异步运行的障碍。 在中,有一个,其回调中包含以下内容: 如何使上述两个函数同步运行使用在中设置的,但下面的显示在完成之前启动。 我已经阅读了一些参考资料,其中提到使用promise,但我不知道如何应用它。。。我还想知道是否可以通过/实现。 完整(ish)代码:(为了简单起
问题内容: 首先,这是一个非常特殊的情况,它以错误的方式故意将异步调用改型为一个非常同步的代码库,该代码库长成千上万行,并且当前时间不具备进行更改的能力。对的。” 它伤害了我的每一个生命,但是现实和理想往往并没有相互融合。我知道这很糟糕。 好的,顺便说一句,我该如何做,这样我可以: 示例(或缺少示例)全部使用库和/或编译器,这两种库均不适用于此解决方案。我需要一个如何使其冻结的具体示例(例如,在调
有两个不同的字符串数组。 我想把这两个数组做成一个4*2矩阵。 我怎么做这个矩阵?
我试图为从服务调用异步函数的函数编写测试,但我一辈子都不知道如何让Jasmine在执行expect函数之前等待异步操作完成。 我试图使用Jasmine的“完成”功能,但我不知道如何实现它。 在本例中,只要 调用时,它立即跳转到expect并失败,因为异步操作尚未完成。
我有一个内部web应用程序,它有一个模态对话框。不幸的是,我不能在这里发布实际的web应用程序位置,但是让我尽可能地描述一下。 当应用程序启动时,屏幕上会出现一个框,告诉您一堆文本。您可以按“下一页”以获取下一页文本 在最后一页上,“下一步”按钮被禁用,web应用程序的其余UI被启用 页面数量不定,所以我不知道我必须点击“下一步”多少次 我可以点击固定的次数(例如,如果我知道有两个页面,我可以点击