Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 你能在lambda中解释这个递归调用背后的逻辑吗?_Javascript_Aws Lambda_Promise - Fatal编程技术网

Javascript 你能在lambda中解释这个递归调用背后的逻辑吗?

Javascript 你能在lambda中解释这个递归调用背后的逻辑吗?,javascript,aws-lambda,promise,Javascript,Aws Lambda,Promise,下面是我从中提取的示例代码,用于在Lambda中执行递归 在第22行(返回新承诺…),函数返回一个承诺给Lambda以调用函数本身(Lambda func)。我的问题是,如果第一个函数仍然需要等待承诺完成,为什么执行会停止 这可能是一个初学者的问题,但我只是不太明白Lambda如何能够同时回归、承诺和完成。第一次运行不应该等待递归调用完成它的执行吗 任何解释都有助于理解这一点:) const AWS=require('AWS-sdk') const lambda=新的AWS.lambda() 常

下面是我从中提取的示例代码,用于在Lambda中执行递归

在第22行(返回新承诺…),函数返回一个承诺给Lambda以调用函数本身(Lambda func)。我的问题是,如果第一个函数仍然需要等待承诺完成,为什么执行会停止

这可能是一个初学者的问题,但我只是不太明白Lambda如何能够同时回归、承诺和完成。第一次运行不应该等待递归调用完成它的执行吗

任何解释都有助于理解这一点:)

const AWS=require('AWS-sdk')
const lambda=新的AWS.lambda()
常量睡眠=(毫秒)=>{
返回新承诺(解析=>setTimeout(解析,毫秒))
}
常量递归限制=5
exports.handler=异步(事件)=>{
log(JSON.stringify(event,null,4));
等待睡眠(2000年);
event.iteration=event.iteration+1 | | 1
console.log('Iteration:'+event.Iteration+'\n')

如果(event.iteration相关信息在此块中

var params = {
    FunctionName: 'lambda-func',
    InvocationType: 'Event',
    Payload: JSON.stringify(event)
};
上面的
InvocationType
表示它是作为
Event
调用的(与
RequestResponse
相反)。事件调用是异步执行的。
lambda.invoke
调用将返回,而无需等待调用完成


参考资料:

您发布的代码中没有递归。我没有解释发布的代码来自“lambda func”函数。因此它调用了自己5次。
var params = {
    FunctionName: 'lambda-func',
    InvocationType: 'Event',
    Payload: JSON.stringify(event)
};