gpt4 book ai didi

javascript - 在 Promise.all 中一起调用 promise 和非 promise

转载 作者:行者123 更新时间:2023-11-28 18:18:00 24 4
gpt4 key购买 nike

我有一个 promise ,aPromise,它调用服务器,还有一个非 promise ,notAPromise,它被同步调用,我需要调用它,然后对结果做一些事情。我有这个,但不确定这是否是最好的做法

Promise.all([aPromise(), Promise.method(notAPromise)()])
.spread(function(result1, result2) {
//do something with results
})
.catch(function(error) {
//do something with error
});

将同步 notAPromise 放在 Promise.all 中正确还是应该放在外部?

这种方式的好处是,如果 aPromise 需要一段时间从服务器返回,则 APromise 在返回时不会完成。或者换句话说,我们不必等到同步 notAPromise 完成才调用服务器。

我应该有更好的方法来编写这段代码吗?

编辑:另外,如果 notAPromise 正在更改某些状态,而不是返回结果,但我只想要新状态,如果 aPromise 也成功返回,可能会出现问题。如果 aPromise 抛出但 notAPromise 已完成,我们将处于新状态,不是吗?

最佳答案

你的代码绝对没问题(甚至可以处理 notAPromise 抛出的情况)。然而,通常人们会简单地写

aPromise().then(function(result1) {
var result2 = notAPromise();
//do something with results
}).…

当我们不关心这两个函数以什么顺序或什么时间被调用时。预计同步 notAPromise 会花费不显着的执行时间,如果它很重要(并且应该能够与其他东西并行运行),它应该是异步的。

关于javascript - 在 Promise.all 中一起调用 promise 和非 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40509344/

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