【发布时间】:2017-05-19 11:04:15
【问题描述】:
您可以使用await 停止async 函数之外的代码吗?但是,我不希望所有代码都停止。我想控制运行什么代码。
我认为可能有一个解决方案,如下所示:
var isAsyncRunning = false;
var currentPromise;
async function asyncFunc(){
isAsyncRunning = true;
//Do some code here
currentPromise = promise; //promise was defined inside the code
await promise;
promise.then(function(){
isAsyncRunning = false;
});
}
async function anotherFunction(){
if(!isAsyncRunning){
await currentPromise;
}
//Do some other code here
}
但是,我有很多功能,不想将其应用于我拥有的每一个功能。
有没有更好的解决方案?如果没有,我可以做些什么来减少耗时?
【问题讨论】:
-
把这个应用到每一个函数上会完成什么?一些背景或示例可能会有所帮助。
-
不是每一个函数。我说过要控制它停止的内容,而不是将其应用于所有功能。
-
您不能在未设置为
async的函数中使用await- 所以anotherFunction无效 -
@JaromandaX 哦,是的,忘记了。固定!
-
你想用这个实现什么?如果您想按顺序运行 Promise,您可以在
bluebird中使用reduce函数,或者如果您更喜欢 vanilla javascript,请使用以下方法:stackoverflow.com/a/36672042/177006
标签: javascript asynchronous promise async-await ecmascript-2017