2016-07-20 13 views
2

ノードjsync forEachループで作業しています。特定の条件が発生したときに非同期ループを終了したい。私はリターンコールバックで試しました。しかし、それは動作していないようです。どうすればこの問題を解決できますか?非同期ループを終了することは可能ですか?特定の条件が発生したときにasync.forEachループを終了する方法+ノード

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 
    }) 

答えて

2

asyncの様々な機能だろう 『出口早い』あなたは、コールバックに値を渡す場合、通常Error

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

しかし、あなたのpermissionオブジェクトのゲッターは非同期である場合を除き、Iなぜあなたが非同期ライブラリを使用しているのか分かりません。

関連する問題