就是如图的问题用map的方法实现循环,如果要实现退出循环直接用return bluebird.reject()就好,但是想实现类似于continue的行为肿么办呢,看了蛮久 mongoose的api也没找到方法,求各位高手指点一下 - -
你是想取消某个promise? 自豪地采用 CNodeJS ionic
@reverland 是的呢,想在符合条件的时候退出,不传到下面一个then里面去了
@infinite-sky 看了下,bluebird有cancel,当然应该也能自己用外部flag标记状态在下一个then中侵入式的判断flag来实现取消。。。 自豪地采用 CNodeJS ionic
看这代码,意思是consdata无效的话,不执行吧?那直接 return 就行了吧。
if (!consdata) return;
db.findOne({account: consdata})
.then()
....
@klesh 直接return相当于for循环的break;但是要实现类似于continue;的行为要用到cancel( ),但是不会用。。。api上貌似没有讲用法。。。
@infinite-sky 你一个promise又不会影响其它的,直接抛异常行么。。。⊙▽⊙ 自豪地采用 CNodeJS ionic
var Promise = require('bluebird');
var array = [1, 2, 3];
Promise.map(array, function(n) {
if (n == 2) return;
return new Promise(function(resolve, reject) {
process.nextTick(function() {
resolve(n * 2);
});
}).then(function(result) {
console.log(result);
});
});
output:
2
6
是不是要这种效果,类似于 for 中的 continue
至于说到 break , 那只有抛出异常,或者 return Promise.reject() 才是 break 的效果。不知我理解可否正确?