节点异步瀑布与通用回调处理程序

时间:2017-08-18 16:16:34

标签: node.js async.js

我继承了一个完全依赖于async.waterfall的应用程序的应用程序。我不想重写整个事情,但在修复一些项目时想要将回调参数转换为更通用的处理程序。

现在,示例函数如下所示(对于更多函数,存在相同的模式)

function create(data, callbackParent) {
  async.waterfall(
    [
      function(callback) {
        if (!interface) {
          return init(callback);
        } else {
          return callback(null);
        }
      },
      function(callback) {
        return interface.create(data, callback);
      }
    ],
    (error, result) => {
      if (error) {
        const codeIndex = error.indexOf('statusCode=') + 'statusCode='.length;
        const errorStatusCode = error.slice(codeIndex, codeIndex + 3);
        if(errorStatusCode == 401) {
          reconnect(callbackParent);
        }
        else {
          return callbackParent(error);
        }
      }
      return callbackParent(null, result);
    }
  );
}

没问题,效果很好;但请注意那里的回调。我试图将其移动到一些通用函数handleResponse(错误,结果),例如:

function create(data, callbackParent) {
  async.waterfall(
    [
      function(callback) {
        if (!interface) {
          return init(callback);
        } else {
          return callback(null);
        }
      },
      function(callback) {
        return interface.create(data, callback);
      }
    ],
    (error, result) => handleResponse
  );
}

我尝试了各种类似语法的组合,但是一切都爆炸了,或者我的callbackParent失去了上下文。

  1. 如何构建async.waterfall数组的回调作为单独的通用处理程序?

0 个答案:

没有答案