node async仅在node-lambda内部调用第一个函数

时间:2016-02-20 20:04:48

标签: javascript node.js asynchronous lambda aws-lambda

使用类似以下节点异步的vanilla节点脚本可以正常工作:

async = require('async');

async.waterfall([
    function (c) {
        console.log(1);
        c(null);
    },        
    function (c) {
        console.log(2);
        c(null);
    }       
  ]);

通过node test.js运行的上述内容打印出来:

1
2

......正如所料。

但是,如果我将代码放在node-lambda处理程序中:

var async = require('async');

exports.handler = function( event, context ) {
  console.log( "==================================");

  async.waterfall([
    function (c) {
        console.log(1);
        c(null);
    },        
    function (c) {
        console.log(2);
        c(null);
    }        
  ]);

  console.log( "==================================");
  context.done( );
}

运行./node_modules/.bin/node-lambda run

时,只调用第一个方法
==================================
1
==================================

我正在使用:

  • async 1.5.2,
  • node 5.5.0
  • node-lambda 0.1.5

1 个答案:

答案 0 :(得分:1)

您正在使用异步代码。 显然,代码context.done( );完成主函数handler和其他异步代码(瀑布中的第二个函数)的执行无法执行,它没有足够的时间,因为主函数已经完成。