2016-10-17 10 views
0

У меня есть список данных, которые в виде массива, например:как ждать в каждом цикле для каждого шага приращения, пока внутренний процесс не будет успешным?

var resultArray = ['a','b','c','d','e']; 

Я использовал этот массив итерации в моем коде, как это:

var updateArray = []; 
_.each(resultArray, function (value, index) { 
    //execute this function for file uploading.. 
    processMyFunction(value, function (error, success) { 
     if(error) { 
      //code to push it in my new array list 
      updateArray.push({value:value,message:error}); 
     } 
     else { 
      //code to push it in my new array list 
      updateArray.push({value:value,message:error}); 
     } 
    }); 
    console.log(updateArray) 
}); 

Здесь он не дает мне обновленную консоль. Поскольку функция загрузки занимает время, чтобы сделать это действие, и это получается из этой функции processMyFunction. Как я должен сделать это _.each, чтобы подождать, пока моя функция не завершит процесс?

Любое предложение об этом?

ответ

0

Как насчет использования async/wait в сочетании с уменьшением? С ES7 это должно быть возможно.

например.

updateArray = await updateArray.reduce(async (acc, value) => { 
    acc = await acc; 

    await processMyFunction(value, function (error, success) { 
     if(error) { 
      //code to push it in my new array list 
      acc.push({value:value,message:error}); 
     } 
     else { 
      //code to push it in my new array list 
      acc.push({value:value,message:error}); 
     } 
    }); 

    return acc; 

}, []); 

console.log(updateArray); 

UPDATE После того как я сделал некоторые исследования по этому вопросу, я также нашел this интересный пост.

+0

@Remin Я использую старую версию обновленной версии метеора V 1.3. Не могли бы вы предложить мне код для этой версии. Я не хочу обновлять версию. – Meteor

+0

@Meteor: У вас есть несколько подходов в ссылке, которую я предоставил. –

+0

ожидание не работает для меня. Можете ли вы дать другую альтернативу для достижения этой цели, ссылка для меня не понятна? – Meteor