Promise.all(
[[getNetworkstuff(url1)],[getNetworkstuff(url2)]]
//please note that the arrays within the array are larger in my application
//otherwise I would just use one big array not arrays in arrays
)
.then(function(result){//Stuff worked})
.catch(function(err){//Stuff broke});
function getNetworkstuff(url){
return new Promise(function(resolve,reject){//here will be awesome network code})
}
我可以看到promise没有实现,因为返回的result
数组包含适当的拒绝promise。
[[PromiseStatus]]: "rejected"
[[PromiseValue]]: Error: HTTP GET resulted in HTTP status code 404.
有人能告诉我为什么不调用catch
吗?(如果我在promise.all()
中有一个promise数组,其中一个被拒绝,我就知道是这样)
看看你的控制台
function getNetworkstuff(url) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
console.log('resolving', url);
resolve(url);
}, 5000);
});
}
Promise.all([[getNetworkstuff('url1')],[getNetworkstuff('url2')]])
.then(function(result){
console.log('It worked', result);
})
.catch(function(err){
console.log('It failed', result);
});
注意,它在解析任何内容之前5秒输出“it Worked”
Promise.all([getNetworkstuff('url1'), getNetworkstuff('url2')])
.then(function(result){
console.log('It worked', result);
})
.catch(function(err){
console.log('It failed', result);
});
现在比较一下没有数组的数组-注意在这两种情况下It Worked
旁边记录的内容的不同
function getNetworkstuff(url) {
return new Promise(function(resolve, reject) {
if(url == 'url1') {
setTimeout(function() {
console.log('resolving', url);
resolve(url);
}, 5000);
}
else {
console.log('rejecting', url);
reject(url);
}
});
}
Promise.all([getNetworkstuff('url1'), getNetworkstuff('url2')])
.then(function(result){
console.log('It worked', result);
})
.catch(function(err){
console.log('It failed', result);
});
function fn(s) {
return s.toUpperCase();
}
function fn2(arr) {
console.log(arr); // [["A"], ["B"]]
}
fn2([[fn('a')],[fn('b')]]);
问题内容: 我有一系列要解决的承诺 我继续继续诺言链。看起来像这样 我想添加一个catch语句来处理单个promise,以防万一出错,但是当我尝试时,返回它发现的第一个错误(忽略其余的),然后我无法从其余的promise中获取数据数组(没有错误)。 我尝试做类似.. 但这并不能解决。 谢谢! - 编辑: 下面的答案完全正确,但代码由于其他原因而中断。如果有人感兴趣,这就是我最终得到的解决方案… 节
本文向大家介绍Promise.all中对于reject的处理方法,包括了Promise.all中对于reject的处理方法的使用技巧和注意事项,需要的朋友参考一下 昨天写了个小爬虫,用axios.all同时请求多个页面时,国内网络的原因很容易就超时然后reject了,佛系resolve不可取啊,然后想到可以实现一个“重发失败请求”的功能。 Promise.all(requestPromises).
我对node.js比较熟悉,编写一个程序时需要承诺异步API调用。我有一个关于执行一些示例代码的问题,这是我在研究中偶然发现的。 下面的代码(根据我的理解)将访问一个API,等待响应,然后将该响应解析为承诺。这是迭代完成的,每个创建的承诺都被传递到一组承诺中。最终,对许诺数组调用promise.all()和.then(),将执行更多代码来迭代数组并将图像添加到页面中。 这里我不理解的是promis
通过对错误类型实现 Display 和 From,我们能够利用上绝大部分标准库错误处理工具。然而,我们遗漏了一个功能:轻松 Box 我们错误类型的能力。 标准库会自动通过 Form 将任意实现了 Error trait 的类型转换成 trait 对象 Box<Error> 的类型(原文:The std library automatically converts any type that imp
问题内容: 我想澄清这一点,因为文档对此不太清楚。 问题1: 是按顺序还是并行处理所有承诺?或者,更具体地说,它相当于运行像 或者是一些其他类型的算法的所有,,,,,等是被称为在同一时间(并行)和结果尽快返回所有的决心(或一个不合格品)? 问题2: 如果并行运行,是否有方便的方法可以依次运行可迭代程序? 注意 :我不想使用Q或Bluebird,而是要使用所有本机ES6规范。 问题答案: 正在执行的
在happy path场景中,我有一个spring批处理工作,但现在我将重点放在错误处理上。 但是,在另一个测试中,我想证明一个不可预见的数据库错误会导致作业失败。为此,我创建了一个触发器,该触发器会导致对要插入的表的插入失败。 这似乎起作用了,在writer执行之后,在事务提交期间抛出异常,并且我得到以下日志消息: 这似乎也是预期的行为。问题是,这并不能阻止工作。该步骤退出到SimplyRetr