Promise allSettled 不是一个函数

jov*_*van 13 javascript promise reactjs react-native expo

我计划在我的 React Native - Expo 项目中将一些 Promise.all 更新为 Promise.allSettled,但该函数不存在。我检查了所有版本,一切都合适,但我仍然无法使用该功能。

节点-v:14.15.4

expo SDK -v 版本:^40.0.1

expo 在其 SDK 版本中使用了 React Native -v 0.63。这不应该是问题。这是错误消息:

Promise.allSettled 不是一个函数

有人知道这个问题的解决方案吗?感谢您的帮助!

Nul*_*Dev 16

对于遇到此问题的任何人,显然这已在 v64 中修复:

https://github.com/facebook/react-native/issues/30236#issuecomment-939286987

对于旧版本,您可以使用简单的polyfill:

Promise.allSettled = Promise.allSettled || ((promises) => Promise.all(
    promises.map(p => p
        .then(value => ({
            status: "fulfilled",
            value
        }))
        .catch(reason => ({
            status: "rejected",
            reason
        }))
    )
));
Run Code Online (Sandbox Code Playgroud)

  • 这个问题是否已解决,因为我使用的是 v66,但它仍然会导致问题 (8认同)

Kir*_*kov 9

React Native 使用https://github.com/then/promise作为 Promises,并且仅在版本 8.2.0 中添加了allSettled. React Ntaive 团队仅在0.70.6中更新到此版本(此处列出了更改,包括承诺版本升至 8.3.0 https://github.com/facebook/react-native/releases/tag/v0.70.6