async.series与事件驱动代码相同

时间:2013-11-28 04:55:56

标签: node.js asynchronous express

我正在使用节点js,用于我的应用程序。例如,代码如下:

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 个答案:

答案 0 :(得分:1)

是的,他们的工作应该相同。是的,它是非阻塞的。如果在两个当前代码块下面添加一个console.log,它将在uploadImage竞争之前执行。 Async.series只是一种避免过度混淆回调的方法。