Azure Function Nodejs 中是不是可以休眠?

Posted

技术标签:

【中文标题】Azure Function Nodejs 中是不是可以休眠?【英文标题】:is posible sleep in Azure Function Nodejs?Azure Function Nodejs 中是否可以休眠? 【发布时间】:2022-01-04 00:07:56 【问题描述】:

我计算了每秒 50 次更新操作所需的请求单位 (RU): https://cosmos.azure.com/capacitycalculator/

但是这 50 次更新操作需要 1 秒才能完成

因此,

使用批量操作(更新操作组)插入 mongodb 数据库时,我需要休眠 1 秒

这在带有 nodejs 的 azure 函数中是否可行?

我试过这个代码

sleep(milliseconds) 
    return new Promise(resolve => setTimeout(resolve, milliseconds))

但不起作用。

有类似情况吗?

【问题讨论】:

您要解决的实际问题是什么。到目前为止,这是一个XY problem,您在其中询问一些理论上的解决方案,而不是描述实际问题。如果您描述实际问题(和相关代码),我们可以以更有价值的方式提供帮助。可能这里正确的答案是正确编写异步数据库插入代码,而不是尝试在某处插入一些随机延迟。 【参考方案1】:

通常我们使用延迟异步函数来等待一个块在 1000 毫秒后重新运行。

以下是我们定期制作的示例之一,以增加我们的逻辑延迟。由于您尚未提供完整的代码,请确保您遵循以下结构。

function RunAfterOneSec() 
  return new Promise(resolve => 
    setTimeout(() => 
      resolve('resolved');
    , 1000);
  );


async function asyncCall() 
  console.log('calling');
  const result = await RunAfterOneSec();
  console.log(result);
  // expected output: "resolved"


asyncCall();

或者你可以在 node sleep package 的帮助下使用,我们可以如下使用它:

var sleep = require('sleep'); 
sleep.sleep(n)
sleep.sleep(n):休眠nsleep.msleep(n): 睡眠 n 毫秒 sleep.usleep(n):休眠n 微秒(1 秒等于 1000000 微秒)

【讨论】:

以上是关于Azure Function Nodejs 中是不是可以休眠?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用节点 js 检查“s3”/“azure”路径中是不是存在文件

mongodb nodejs原生驱动是不是关闭连接

mongodb nodejs原生驱动是不是关闭连接

服务总线输出绑定在 Azure 中不起作用

nodejs vue SyntaxError:Block-scoped declarations (let,const,function,class) not yet supported

如何检查MongoDB本机nodejs驱动程序中是不是存在集合?