promise allsettle,promise allset

  promise allsettle,promise allset

  如何使用Promise.allSettled()?下面这篇文章就带你了解一下Promise.allSettled()并介绍一下它的用法。希望对你有帮助!

  Promise.allSettled()方法在所有给定的承诺被履行或拒绝后返回一个承诺,并带有一个对象数组,每个对象代表相应的承诺结果。

  接下来,我们来看看Promise.allSettled()是如何工作的。

  

1. Promise.allSettled()

   Promise.allSettled()可用于并行执行独立的异步操作,并收集这些操作的结果。

  该函数将promise数组(通常是一个可迭代的对象)作为参数:

  const status promise=promise . all settled(promises);当所有的输入承诺都实现或被拒绝时,statusesPromise被解析到一个数组中,其中包含它们的状态。

  {状态:已履行,值:值}—如果相应的承诺已履行

  或者{状态:已拒绝,原因:原因}如果相应的承诺已被拒绝。

  解析所有承诺后,您可以使用then语法提取它们的状态:

  statuses promise . then(status={

  状态;//[{状态: .,值:“.”},]

  });或者使用异步/等待语法:

  常量状态=等待状态承诺;

  状态;//[{状态: .,值:“.”},]:

2. 取水果和蔬菜

  在深入研究Promise.allSettle()之前,我们先定义两个简单的helper函数。

  首先,resolveTimeout(value,delay)返回一个承诺,在延迟时间过去后用value实现。

  函数resolveTimeout(值,延迟){

  返回新承诺(

  resolve=setTimeout(()=resolve(value),delay)

  );

  }二、rejectTimeout(reason,delay)-延迟时间过去后返回拒绝原因的承诺。

  最后,我们使用这些辅助函数对promise.allsettle()进行实验。

  2.1 All promises fulfilled

  同时,我们参观当地杂货店的蔬菜和水果。访问每个列表是一个异步操作:

  const status promise=promise . all settled([

  resolveTimeout([土豆,西红柿],1000),

  resolveTimeout([桔子,苹果],1000)

  ]);

  //等待.

  常量状态=等待状态承诺;

  //1秒钟后

  console.log(状态);

  //[

  //{状态:已履行,值:[土豆,西红柿] },

  //{状态:已履行,值:[桔子,苹果] }

  //]Promise.allSettled([.])返回一个promise statusesPromise,1秒求解,就在蔬菜水果求解之后,并行。

  StatusesPromise解析为包含状态的数组。

  数组的第一项包含蔬菜的完成状态:status: fulfilled ,value: [potatoes , tomatoes]}

  同理,第二项是水果的完成状态:{status:已完成,value: [橙子,苹果]}

  2.2一个 promise 被拒绝

  想象一下,杂货店里没有水果。在这种情况下,我们拒绝水果的承诺。

  在这种情况下,promise.allsettle()如何工作?

  const status promise=promise . all settled([

  resolveTimeout([土豆,西红柿],1000),

  rejectTimeout(新错误(没有水果了!), 1000)

  ]);

  //等待.

  常量状态=等待状态承诺;

  //1秒钟后

  console.log(状态);

  //[

  //{状态:已履行,值:[土豆,西红柿] },

  //{状态:已拒绝,原因:错误(没有水果了!) }

  //]由promise.allsettled ([.])在1秒后解析为状态数组:

  数组中的第一项“蔬菜承诺”已成功解析:{status: fulfilled ,value:[ potatos , tomatoes]}

  第二,因为水果承诺被拒绝,所以是拒绝状态:{状态:拒绝,原因:错误( out of fruits)}

  即使输入数组中的第二个promise被拒绝,statusesPromise仍将成功解析一个状态数组。

  2.3 所有的 promises 都被 rejected

  如果杂货店的蔬菜水果都卖完了怎么办?在这种情况下,两个承诺都会被拒绝。

  const status promise=promise . all settled([

  rejectTimeout(新错误(蔬菜用完了!), 1000),

  rejectTimeout(新错误(没有水果了!), 1000)

  ]);

  //等待.

  常量状态=等待状态承诺;

  //1秒钟后

  console.log(状态);

  //[

  //{状态:已拒绝,原因:错误(蔬菜缺货!) },

  //{状态:已拒绝,原因:错误(没有水果了!) }

  //]在这种情况下,statusesPromise仍然成功解析为状态数组。但是,该数组包含被拒绝承诺的状态。

  

3.总结

   promise . all set(promises)可以并行运行promise,并将状态(已履行或拒绝)收集到一个聚合数组中。

  Promise.allSettled(.)在您需要执行并行和独立的异步操作并收集所有结果时非常有效,即使有些异步操作可能会失败。

  有关编程的更多信息,请访问:编程视频!以上是如何深入使用Promise.allSettled()的详细内容。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: