gpt4 book ai didi

javascript - 如何从 Promise 中提取数据

转载 作者:可可西里 更新时间:2023-11-01 01:29:38 27 4
gpt4 key购买 nike

我有一个返回数据的 promise ,我想将其保存在变量中。由于异步性质,这在 JavaScript 中是不可能的吗?我是否需要使用 onResolve 作为回调?

我能以某种方式使用它吗(例如用 async/await 包装它):

const { foo, bar } = Promise.then(result => result.data, errorHandler);
// rest of script

而不是这个?

Promise.then(result => {
const { foo, bar } = result.data;
// rest of script
}, errorHandler);

注意:使用 Bluebird 库而不是原生实现,我不能从 Promise 更改为 asnyc/await 或 Generators。

最佳答案

不,您不能像您在示例中建议的那样从 promise 中同步获取数据。数据必须在回调函数中使用。或者,在函数式编程风格中, promise 数据可以是 map()ed over .

如果您可以使用 async/await (你应该觉得它很棒)然后你就可以编写看起来同步但又保留了 promise 的异步性的代码(请参阅@loganfsmyth 评论)。

const { foo, bar }  = await iAmAPromise.then(result => result.data);

总的来说,由于您已经在使用 ES6,我假设您也在使用转译器。在这种情况下,您绝对应该尝试 async/await。请务必权衡今天它们尚未成为批准规范的决定。

关于javascript - 如何从 Promise 中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36911241/

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