如果未解决承诺,Promise.all()不会收到数据

时间:2015-05-21 12:45:34

标签: javascript promise

我正在构建一个javascript小部件,它会将iframe加载到页面上,但为了防止iframe在每次请求时加载,首先需要进行API查找以检查所请求的devices在iframe中加载实际存在于数据库中。

我遇到的问题是,如果数据库中不存在products中的项目(很可能发生),那么该承诺将无法解决,反过来会停止{{1从返回Promise.all(promises).then()...开始,我需要这个data数组将已解析的设备传递到iframe。

非常感谢任何帮助!

data

1 个答案:

答案 0 :(得分:3)

所有承诺都已解决后,将调用

Promise.all().done。你拒绝了一些承诺。

使用成功或错误值实施fail始终解析。这基本上会将您的错误处理移到链中。

if (xhr.status == 200) {
    resolve({ status: "ok", product: product });
} else {
    resolve({ status: "fail" });
}

您还可以考虑对非现有产品的请求成功并返回错误正文而不是产品数据。