Javascript 使用promise.all返回承诺

Javascript 使用promise.all返回承诺,javascript,promise,Javascript,Promise,我有两个函数来解析一个承诺和另一个第三个常量,它只是一个整数。在这里,我尝试了Promise.all以返回已解决的承诺 const a=Promise.resolve('First returned'); 常数b=新承诺((解决、拒绝)=>{ setTimeout(()=>{resolve('second returned');},300); }); 常数c=123; 承诺。所有([a,b,c])。然后(回答=>{ 控制台日志(响应); });如果传递到承诺中的iterable对象中的任何项不

我有两个函数来解析一个承诺和另一个第三个常量,它只是一个整数。在这里,我尝试了
Promise.all
以返回已解决的承诺

const a=Promise.resolve('First returned');
常数b=新承诺((解决、拒绝)=>{
setTimeout(()=>{resolve('second returned');},300);
});
常数c=123;
承诺。所有([a,b,c])。然后(回答=>{
控制台日志(响应);

});如果传递到承诺中的iterable对象中的任何项不是承诺的实例,它将被忽略并传递到
,然后使用
Promise.resolve
方法生成
结果。简洁,它将自动解决

如果iterable包含非承诺值,则将忽略这些值,但 仍在返回的承诺数组值中计数(如果承诺为 (已完成):

在Promose.all(…)中,如果iterables是非承诺值,则结果将是

  • 默认解决或
  • 结果将根据承诺值进行推断
这三个例子将说明这一点

// resolved by default

let a = 100;
let b = 200;

Promise.all([a,b]).then(function(){
    console.log("Promised Resolved");
});
根据结果推断-已解决

// Resolved here
Promise.all([a,b, Promise.resolve("R-Text")]).then(function{
   console.log("R-Test Promise Resolved...");
}).catch(function(text){
   console.log("R-Test Promise Rejected...", text);
});
从结果推断-拒绝

  // Rejected here
    Promise.all([a,b, Promise.resolve("R-Text"), Promise.reject("Rejected")]).then(function{
       console.log("R-Test Promise Resolved...");
    }).catch(function(text){
       console.log("R-Test Promise Rejected...", text);
});

对于每个
iterable
object,它也承诺有助于执行异步代码。在这里,如果我设置Timeout,那么它将等待直到它被解决,只有这样它才会进入下一个承诺。那么这是同步的吗?因为您在
setTimeout
回调中使用了
resolve
,所以它将等待直到调用resolved,然后传递到
然后
。但这并不意味着它是同步的。同步意味着在承诺
then
之后的rest调用将停止,直到
then
工作