Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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
Node.js Azure持久函数的活动函数中的超时_Node.js_Azure_Settimeout_Azure Durable Functions - Fatal编程技术网

Node.js Azure持久函数的活动函数中的超时

Node.js Azure持久函数的活动函数中的超时,node.js,azure,settimeout,azure-durable-functions,Node.js,Azure,Settimeout,Azure Durable Functions,在我的活动功能中,我正在这样做 do { await timeout(500); } while (await getStatus() === false); 在哪里, function timeout(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } getStatus()是一个函数,它执行get请求以查看其他服务中的进程是否完成,并基于此返回true或false 我需要我的活动函数等

在我的活动功能中,我正在这样做

do {
     await timeout(500);
} while (await getStatus() === false);
在哪里,

function timeout(ms) {
      return new Promise(resolve => setTimeout(resolve, ms));
}
getStatus()
是一个函数,它执行
get
请求以查看其他服务中的进程是否完成,并基于此返回
true
false

我需要我的活动函数等待其他服务中的进程完成。但默认情况下,活动函数的执行时间限制为5分钟。 my
getStatus()
可能需要2-3小时或更长时间才能返回
true


我能在这里做什么?有什么建议吗

您有两个选择:

选项A:使用监视器模式+倒带 您是否可以将
getStatus
代码拆分为另一个活动函数?如果是,则假设如下:

  • ActivityFunction\u A
    -在使用
    getStatus()轮询的do while循环之前包含代码

  • ActivityFunction\u B
    -包含使用轮询
    getStatus
    的代码

  • ActivityFunction\u C
    -在
    getStatus
    返回
    TRUE

  • 现在,您可以编排工作流序列

    ActivityFunction_A => ActivityFunction_B => ActivityFunction_C
    
    使用该模式

    由于任何一个活动函数都可能失败或超时,并且执行每个活动函数都有潜在的副作用,因此您还应该使用该功能(当前处于预览中)仅从序列中第一个失败的活动函数开始倒带和重放。

    选项B:使用应用程序服务计划
    如果您的工作流实际上不需要动态扩展到许多实例,那么您可以在打开的情况下将您的函数迁移到。

    您不能使用then callback of promise吗?