当前位置:  开发笔记 > 编程语言 > 正文

执行不等待AWS Lambda中的promise结果

如何解决《执行不等待AWSLambda中的promise结果》经验,为你挑选了1个好方法。

我正在尝试在AWS Lambda中使用promises并遇到一些麻烦.我正在使用typescript/nodejs; 见下面的代码

export function handler(event: any, context: any, callback: Function){

    testFunction().then(data => callback(null, "success from promise"));
    callback(null, "success");
}   

export function testFunction(){
    return new Promise((resolve, reject) => {
        setTimeout(() => resolve("data"), 5000);
    });
}

当我运行代码时,我得到的是"成功回调",而不是"承诺的成功".我在这里做错了吗?



1> Explosion Pi..:

实际上你正在调用两次回调:一次在第四行"success",一次在promise结束之后.我认为lambda基本上会忽略第二个回调(实际上是你代码中的第一个回调).

你只能删除另一个电话:

export function handler(event: any, context: any, callback: Function){
    testFunction().then(data => callback(null, "success from promise"));
}

注意:回调仅受Node 4.3支持.它也是可选的.如果要将数据显式传递回调用者,则只需使用它.否则,一旦事件循环为空,它将自动被调用,在这种情况下将在promise结算后发生.

context.callbackWaitsForEmptyEventLoop = false如果希望lambda函数在callback调用时立即结束而不是等待事件循环完成,也可以更改设置.但是,你很可能不需要这样做.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有