【发布时间】:2015-12-01 09:54:05
【问题描述】:
问题:
是否可以等待启动新异步函数的异步函数?
详情:
我已经查找了很多方法来等待异步函数完成,然后再继续执行代码,或者运行特定的函数或代码块。但是有一件事困扰了我很长时间 - 我不知道是否也在等待新的异步函数启动,或者是否需要考虑他们自己的代码。
伪代码:
var value = 1;
af1();
alert(value);
async function af1(){
af2();
}
async function af2(){
af3();
}
async function af3(){
value = 2;
}
我不知道这是否是一个很好的例子(甚至是正确的语法),但将异步函数想象成一些需要一些时间才能完成的 ajax 请求。我有一种感觉,如果你在 af1 上添加一个 jQuery deferred,它只会等待 af1 而忽略 af2 和 af3。我还为某些函数使用了外部 javascript 文件,但我无法真正控制在那里启动哪些新函数。
再说一遍,是否有可能将所有这些包装成一些东西并在完成后运行一些代码?还是我对 jQuery 的 deferred 和 .done 函数有误解??
【问题讨论】:
-
你真的应该阅读 Promises。
-
"它将 […] 忽略 af2 和 af3" - 是的,当然,因为您甚至没有调用它们。您能否添加一些调用以使示例更加真实?
-
@mathkid91:谢谢,我调整了我的答案,现在更有意义了:-)
标签: javascript asynchronous async-await ecmascript-next