使用bluebird多个异步请求代码怎么来组织,大家一起讨论下呗
下一个请求依赖上一个请求结果的话只能一个一个.then了 如果各个请求互相独立没有依赖,想都不用想,直接.all走起
.then
.all
@imhered 有详细的代码么,就是不知道怎么来写
@wyfnet 假如你有如下3个函数,返回的都是Promise:
f1(), f2(), f3()
后一个请求依赖前一个请求结果的写法:
f1() .then(function (val) { return f2(val); }) .then(function (val) { return f3(val); }) .then(function (val) { // dosomething });
如果各个请求互相独立没有依赖那就更好办了
Promise.all([ f1(), f2(), f3() ]).spread(function (f1,f2,f3) { // 这里的f1,f2,f3就是上面3个函数的结果 // 也可以.then 得到的结果是一个数组 })
这个编辑器里写代码太麻烦了,不知道写的有没有错
@imhered 谢谢,大概有点头绪了,后面再请教,膜拜
@imhered bulebird 多个请求其中某个请求出现超时或者错误怎么办呢?
@wyfnet 用.catch可以捕捉错误,如果是.all的话,只要有一个错误,会中断所有执行。 如果你是用.then.then 这样一个一个串联执行的话,在错误出现前的执行都是有效的
.catch
.then.then
去看看bluebird的文档吧,都有写~
@wyfnet 我想到的是在单个请求对应的 promise 里 catch,然后在 all 里分别处理。类似
Promise.all([ f1().catch(err => return promise.resolve(err)) f2().catch(err => return promise.resolve(err)) f3().catch(err => return promise.resolve(err)) ]).spread((f1, f2, f3) => { // todo })
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
下一个请求依赖上一个请求结果的话只能一个一个
.then了 如果各个请求互相独立没有依赖,想都不用想,直接.all走起@imhered 有详细的代码么,就是不知道怎么来写
@wyfnet 假如你有如下3个函数,返回的都是Promise:
后一个请求依赖前一个请求结果的写法:
如果各个请求互相独立没有依赖那就更好办了
这个编辑器里写代码太麻烦了,不知道写的有没有错
@imhered 谢谢,大概有点头绪了,后面再请教,膜拜
@imhered bulebird 多个请求其中某个请求出现超时或者错误怎么办呢?
@wyfnet 用
.catch可以捕捉错误,如果是.all的话,只要有一个错误,会中断所有执行。 如果你是用.then.then这样一个一个串联执行的话,在错误出现前的执行都是有效的去看看bluebird的文档吧,都有写~
@wyfnet 我想到的是在单个请求对应的 promise 里 catch,然后在 all 里分别处理。类似