如何在出现特定情况时退出async.forEach循环+节点

我正在为每个循环的节点jsasynchronous工作。 当某些情况发生时,我想退出asynchronous循环。 我试着callbackcallback。 但它似乎不工作。 我如何解决这个问题? 是否有可能退出asynchronous循环。

async.forEach(usertype.permissions, function (permission, cb) { if (usertype.type === 'super_admin') { console.log('super admin') flag = 1; // here i want to exit from the loop //return cb(); } if (permission.description === 'Can this use?' && permission.default_value.indexOf('YES') > -1) { flag = 1; return cb(); } else { if (permission.description === 'Ca?' && permission.default_value.indexOf('YES') > -1) { flag = 1; console.log('permission to advance') return cb(); } else { cb(); } } }, function () { // The code i want to execute after exit from the loop }) 

async的各种function将“退出提前”,如果你传递一个值的callback,通常是一个Error

 async.forEach(usertype.permissions, function (permission, cb) { if(someCondition) return cb(new Error('I want to exit here')); }, function(err) { // Finished }); 

但是,除非你的permission对象的getter是asynchronous的,我不知道你为什么使用asynchronous库。