Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Promise.all()中的Promise和query的状态是什么?_Javascript_Asynchronous_Promise - Fatal编程技术网

Javascript Promise.all()中的Promise和query的状态是什么?

Javascript Promise.all()中的Promise和query的状态是什么?,javascript,asynchronous,promise,Javascript,Asynchronous,Promise,在本文的上下文中:。以及“运行代码以响应多个承诺” 对于此特定代码段: function fetchAndDecode(url, type) { return fetch(url).then(response => { if (type === 'blob') { return response.blob(); } else if (type === 'text') { return response.text(); } })

在本文的上下文中:。以及“运行代码以响应多个承诺”

对于此特定代码段:

function fetchAndDecode(url, type) {
   return fetch(url).then(response => {
    if (type === 'blob') {
      return response.blob();
    } else if (type === 'text') {
      return response.text();
    }
  })
  .catch(e => {
    console.log('There has been a problem with your fetch operation: ' + e.message);
  });
}

let coffee = fetchAndDecode('coffee.jpg', 'blob');
let tea = fetchAndDecode('tea.jpg', 'blob');
let description = fetchAndDecode('description.txt', 'text');


Promise.all([coffee, tea, description]).then(values => {

});
文章中说:在块的末尾,我们连接一个.catch()调用,以处理可能出现的任何错误情况,这些错误情况可能会在数组中传递给.all()如果任何承诺被拒绝,catch块将告诉您哪一个有问题。.all()块(见下文)仍将履行,但不会显示有问题的资源。如果要拒绝.all,则必须将.catch()块链接到其末尾

如果任何承诺被拒绝,那么.all()块将实现吗?看着它说。all()块只有在所有承诺都实现时才会实现


另外,如果我们无法从url获取并进入。catch block,那么函数返回的承诺状态将是什么?在这种情况下,承诺状态是否仍将挂起???

您的困惑是可以理解的。你缺少的一点是承诺。一切都将永远成功,因为你给每个承诺都添加了一个陷阱

因此,即使其中一个子承诺失败,您也只会得到
未定义的
,而不是值,但您已经处理了任何拒绝。一旦你
.catch
得到的承诺将被视为已解决,而不是被拒绝。如果仍希望拒绝,可以在日志记录后重新抛出错误。

您显示的
.catch()
处理拒绝并将其转化为已兑现的承诺。因此,没有被拒绝的承诺会影响你的
承诺。all()
。这通常不是使用
Promise.all()
编程的方式。如果您想要所有结果,Javascript有
Promise.allsolited()
。不管是否有些失败。谢谢!只有一句话“一旦你,抓住…”就清楚了。