Javascript 在循环中收集异步和同步数据 var数据=[10,21,33,40,50,69]; var i=0; var-dataSeq=[]; 而(我

Javascript 在循环中收集异步和同步数据 var数据=[10,21,33,40,50,69]; var i=0; var-dataSeq=[]; 而(我,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我想我有你需要的 您的代码将如下所示: var data = [10,21,33,40,50,69]; var i = 0; var dataSeq = []; while(i<data.length){ if(data[i]%2 == 0){ store.findOne({'visibility': true},funct

我想我有你需要的

您的代码将如下所示:

    var data = [10,21,33,40,50,69];
    var i = 0;          
    var dataSeq = [];
    while(i<data.length){                   
      if(data[i]%2 == 0){                       
          store.findOne({'visibility': true},function(err, data){                               
          dataSeq.push(i)
          i++;                              
          });                           
      }
      else{
       dataSeq.push(i)
       i++;                         
      }
    }
    if(i==data.length-1){
    console.log(dataSeq) // Should Print [1,2,3,4,5]
    return res.status(200).send({  message: 'Task Completed'})    
  }
我想这是你需要的

您的代码将如下所示:

    var data = [10,21,33,40,50,69];
    var i = 0;          
    var dataSeq = [];
    while(i<data.length){                   
      if(data[i]%2 == 0){                       
          store.findOne({'visibility': true},function(err, data){                               
          dataSeq.push(i)
          i++;                              
          });                           
      }
      else{
       dataSeq.push(i)
       i++;                         
      }
    }
    if(i==data.length-1){
    console.log(dataSeq) // Should Print [1,2,3,4,5]
    return res.status(200).send({  message: 'Task Completed'})    
  }

你可以用像


你可以用像


据我所知,eachOf仍在并行运行;他说他希望它以串联方式运行。也就是说,他可能没有要求他真正需要什么,因为他的示例代码似乎不依赖于顺序操作。据我所知,eachOf仍在并行运行;他说他希望它以串联方式运行。也就是说,他可能没有要求r他真正需要的,因为他的示例代码似乎不依赖于顺序操作。为什么使用store.findOne?甚至不使用回调中的数据。为什么使用store.findOne?甚至不使用回调中的数据。
var async = require('async');

var data = [10,21,33,40,50,69];
var dataSeq = [];

async.eachOf(data, function(value, key, cb) {
    if (value % 2 == 0) {
        store.findOne({ 'visibility': true })
        .then(function(doc) {
            dataSeq.push(key);
        })
        .catch(function(err) {
            return cb(err);
        });
    } else {
        cb();
    }
}, function(err) {
    if (err) {
        console.error(err)
        return res.status(500).send(); # handle the error as you want
    }
    return res.status(200).send({  message: 'Task Completed'})
})