作者:小峰哥2502868817 | 来源:互联网 | 2022-12-08 16:53
1> jfriend00..:
任何一个都没问题.你的选择.
在第一个你是嵌套.then()
处理程序.在第二个中,您使用较新await
的序列来对它们进行排序.越来越多的人开始使用await
它,因为它似乎是更简单的排序操作代码(假设你做了正确的错误处理),虽然在这种情况下,它们的复杂性非常相似,特别是下面建议的简化,所以这取决于你自己的个人编码风格.
两者中缺少的是get()
只返回一个promise,所以你需要使用它.then()
并.catch()
使用它来获取值并捕获任何错误.
另外,第一个缺少的是你没有返回第二个promise,这意味着调用者不知道第二个操作何时完成.
你的第一个可以简化和修复如下:
const get = () => {
return fetchSomething().then(fetchSomethingElse);
}
get().then(val => {
// done here
}).catch(err => {
// error here
});
正如Pointy所说,你不是"做出承诺".你"调用一个返回一个承诺的函数".承诺是对象.他们不可赎回.
你的标题可能被重写的可能是:"正确的方法来排序每个返回一个承诺的两个异步操作".
为了完整起见,如果您的两个异步操作不相互依赖,则您不必手动对它们进行排序.您可以启动它们,然后监视何时完成.这有时会得到更快的端到端响应.
你可以这样做Promise.all()
:
const get = function() {
return Promise.all([fetchSomething(), fetchSomethingElse()]).then(results => {
// process results array and then return final value
// results[0] is result from fetchSomething, results[1] is result from fetchSomethingElse
return finalVal;
});
}