2013-11-28 3 views
0

Я использую узел js для моего приложения. И есть, например, такой код:Является async.series то же, что и код, управляемый событиями

userProvider.uploadImage(formData.imageSmall, 'full', function(err) { 
     if (err) throw err; 
     userProvider.uploadImage(formData.image, 'small', function (err) { 
        if (err) callback(err); 
        res.send("images loaded"); 
     }); 
}); 

это то же самое, как:

async.series([ 
     function(callback) { 
        userProvider.uploadImage(formData.image, 'full', function (err) { 
          if (err) callback(err); 
           callback(); 
        }); 
     }, 
     function(callback) { 
        userProvider.uploadImage(formData.imageSmall, 'small', function(err){ 
          if (err) callback(err); 
           callback(); 
        }); 
     } 
], 
     function(err) { 
        if (err) throw err; 
        res.send("images loaded"); 
     } 
); 

ли это две версии кода делает то же самое? Могу ли я считать вторую версию неблокирующей?

ответ

1

Да, они должны работать одинаково. Да, это не блокирует. Если вы добавите console.log под обоими вашими текущими кодовыми блоками, он будет выполняться до того, как будет конкурировать uploadImage. Async.series - это просто способ избежать чрезмерно запутывающих обратных вызовов.

+0

Можете ли вы привести ссылку на пример, как смешивать параллельные и последовательные задачи? (речь идет не об этом вопросе) –

+0

Вот пример серии смешивания и параллельности: http://stackoverflow.com/questions/17151467/node-js-mocha-async-test-doesnt-return-from-callbacks/ – dankohn