Javascript Promise.all()如果Promise不是';t解决
我正在构建一个javascript小部件,将iframe加载到页面上,但为了防止每次请求时加载iframe,首先需要进行API查找,以检查被请求加载到iframe中的Javascript Promise.all()如果Promise不是';t解决,javascript,promise,Javascript,Promise,我正在构建一个javascript小部件,将iframe加载到页面上,但为了防止每次请求时加载iframe,首先需要进行API查找,以检查被请求加载到iframe中的设备是否确实存在于数据库中 我遇到的问题是,如果数据库中不存在products中的某个项目(这很可能发生),那么该承诺将无法得到解决,从而停止promise.all(promises)。然后()我需要这个数据数组来将解析的设备传递到iframe中 任何帮助都将不胜感激 function sendAPIRequest (product
设备是否确实存在于数据库中
我遇到的问题是,如果数据库中不存在products
中的某个项目(这很可能发生),那么该承诺将无法得到解决,从而停止promise.all(promises)。然后()我需要这个数据
数组来将解析的设备传递到iframe中
任何帮助都将不胜感激
function sendAPIRequest (product) {
return new Promise(function (resolve, reject) {
var url = 'http://localhost:3000/api/product_availability?__url_path_param=';
var xhr = createAPIRequest('GET', url + product);
if (!xhr) {
return;
}
xhr.onload = function () {
if (xhr.status == 200) {
resolve(product);
} else {
reject(Error(xhr.statusText));
}
};
xhr.onerror = function () {
reject(Error('Error fetching data...'));
};
xhr.send();
});
}
function formatProductName (product) {
return product.replace(/ /g,"+").toLowerCase();
}
function getProducts () {
var promises = [];
for (var i in products) {
promises.push(sendAPIRequest(formatProductName(products[i].product_name)));
}
Promise.all(promises).then(function (data) {
console.log(data);
}).catch(function (err) {
console.log(err);
});
}
getProducts();
解析所有承诺后,将调用Promise.all().done
。你拒绝了一些承诺
执行失败
或始终使用成功或错误值解决。这实质上是将错误处理向下移动
if (xhr.status == 200) {
resolve({ status: "ok", product: product });
} else {
resolve({ status: "fail" });
}
您还可以考虑对一个非现有产品的请求成功并返回一个错误体,而不是产品数据。
<代码> Posiv.AL()。你拒绝了一些承诺
执行失败
或始终使用成功或错误值解决。这实质上是将错误处理向下移动
if (xhr.status == 200) {
resolve({ status: "ok", product: product });
} else {
resolve({ status: "fail" });
}
您还可以考虑对一个非现有产品的请求成功并返回一个错误体,而不是产品数据。
<代码> Posiv.AL()。你拒绝了一些承诺
执行失败
或始终使用成功或错误值解决。这实质上是将错误处理向下移动
if (xhr.status == 200) {
resolve({ status: "ok", product: product });
} else {
resolve({ status: "fail" });
}
您还可以考虑对一个非现有产品的请求成功并返回一个错误体,而不是产品数据。
<代码> Posiv.AL()。你拒绝了一些承诺
执行失败
或始终使用成功或错误值解决。这实质上是将错误处理向下移动
if (xhr.status == 200) {
resolve({ status: "ok", product: product });
} else {
resolve({ status: "fail" });
}
您还可以考虑对一个非现有产品的请求成功并返回一个错误体而不是产品数据。