gpt4 book ai didi

Javascript - 如果是异步情况

转载 作者:行者123 更新时间:2023-11-30 10:04:39 26 4
gpt4 key购买 nike

我的问题有点关于概念。

很多时候都是这样的情况:

if(something){
someAsyncAction();
}else{
someSyncAction();
}

// Continue with the rest of code..
var a = 5;

这种情况的问题很明显,我不希望调用 var a = 5 除非 someAsyncAction()someSyncAction() 将完成,现在,因为 soAsyncAction() 是异步的(我能想到的)解决这种情况的唯一方法是这样的:

var after = function(){
// Continue with the rest of code..
var a = 5;
}

if(something){
someAsyncAction(after);
}else{
someSyncAction();
after ();
}

但是,这段代码很丑陋,难以阅读并且看起来像反模式并且有问题。

我想也许我可以通过 Promises(在后端使用 Bluebird)找到一些解决方案,但找不到。

有没有人以前遇到过这个问题,可以帮我解决这个问题?

谢谢!

最佳答案

使用 promises,您将拥有与回调类似的模式,只是您会先存储结果,而不必两次调用/传递回调:

function after(result) {
// Continue with the rest of code..
var a = 5;
}
var promise;
if (something){
promise = someAsyncAction();
} else {
promise = Promise.resolve(someSyncAction());
}
promise.then(after);

或者简而言之,您将使用条件运算符并将其构造得更加直接:

(something
? someAsyncAction()
: Promise.resolve(someSyncAction())
).then(function(result) {
// Continue with the rest of code..
var a = 5;
});

关于Javascript - 如果是异步情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29802311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com