node.js - Node.js 中的异步或步骤

标签 node.js asynchronous

我无法让我的异步代码与 node.js 一起工作

同时尝试 async 和 step 库——代码只返回第一个函数(似乎没有通过其余函数)。我做错了什么?

谢谢!

var step = require('step');
step(
function f1(){
        console.log('test1');
},
function f2(){
        console.log('test2');
},
function finalize(err) {
    if (err) { console.log(err);return;}
    console.log('done with no problem');
  }
);

或者这个:

var async = require('async');
async.series([
function f1(){
        console.log('test1');
},
function f2(){
        console.log('test2');
},
function finalize(err) {
    if (err) { console.log(err);return;}
    console.log('done with no problem');
  }
]);

最佳答案

Step.js 期待每个步骤的回调。此外,使用 Step 的函数应该使用结果进行回调,而不是返回它。

假设您有:

function pullData(id, callback){
  dataSource.retrieve(id, function(err, data){
    if(err) callback(err);
    else callback(data);
  });
}

使用 Step 的效果如下:

var step = require('step');

function getDataFromTwoSources(callback){
  var data1,
    data2;
  step(
    function pullData1(){
      console.log('test1');
      pullData(1, this);
    },
    function pullData2(err, data){
      if(err) throw err;
      data1 = data;
      console.log('test2');
      pullData(2, this);
    },
    function finalize(err, data) {
      if(err)
        callback(err);
      else {
        data2 = data;
        var finalList = [data1, data2];
        console.log('done with no problem');
        callback(null, finalList);
      }
    }
  );
};

这将使它继续执行这些步骤。

请注意,出于两个原因,我个人更喜欢异步:

  • Step 捕获所有抛出的错误并对其进行回调;这会改变应用程序的行为,而这些库应该只是清理代码的外观。
  • Async 有更好的组合选项,看起来更干净

关于node.js - Node.js 中的异步或步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11533471/

相关文章:

node.js - 监听特定的 url 而不是端口

node.js - Express 和 mongodb 文章

javascript - 当我呈现除主页以外的不同路线时,html 未加载源,express-handlebars-Node.js

Javascript嵌套数组单元素修改转换为整个数组修改

ios - swift shouldPerformSegueWithIdentifier 异步获取数据

javascript - 使用 node.js 写入二进制数据的问题

javascript - foreach 循环中的异步

javascript - Knex 中的链接查询/事务?

asynchronous - CUDA 中异步 memcpy 期间的设备同步

node.js - Node.js Express 中的异步代码