节点异步仅在 node-lambda 内部调用第一个函数

node async only calls first function when inside node-lambda

本文关键字:调用 第一个 函数 内部 node-lambda 异步 节点      更新时间:2023-09-26

使用像以下节点异步这样的普通节点脚本就可以了:

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

以上通过node test.js运行时打印出来:

1
2

。不出所料。

但是,如果我将代码放在节点 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
==================================

我正在使用:

  • 异步 1.5.2,
  • 节点 5.5.0
  • 节点λ 0.1.5

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

相关文章: