Promise.all数组中传的不是promise对象,将返回什么?

Promise.all() 是 JavaScript 中用于处理多个 Promise 对象的一个方法。这个方法接收一个 Promise 对象的数组作为参数,并返回一个新的 Promise 对象。这个新的 Promise 会在数组中所有的 Promise 对象都成功(resolve)时成功,并返回一个包含所有成功结果的数组;如果任何一个 Promise 对象失败(reject),这个新的 Promise 也会立即失败,并返回第一个失败的错误。

如果你向 Promise.all() 传递的数组中包含的不是 Promise 对象,而是其他类型的值(例如,数字、字符串、对象等),Promise.all() 仍然会返回一个 Promise 对象。但是,这些非 Promise 类型的值会被视为已经成功(即已 resolve)的 Promise 对象,并且它们的值会原封不动地出现在最终的成功结果数组中。

例如:

Promise.all([1, 'two', { three: 3 }, Promise.resolve(4)])
  .then((values) => {
    console.log(values); // 输出: [1, 'two', { three: 3 }, 4]
  })
  .catch((error) => {
    console.error(error);
  });

在这个例子中,Promise.all() 接收了一个包含数字、字符串、对象和已解决的 Promise 对象的数组。它返回一个新的 Promise 对象,这个 Promise 对象会立即成功,并返回一个包含所有原始值的数组。注意,非 Promise 类型的值(1、'two' 和 { three: 3 })在结果数组中保持不变。

posted @   王铁柱6  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示