我正在使用异步迭代从DynamoDB获取项目。对于每次迭代(项目),我都会执行一些http请求。为了限制请求流,我需要在每次迭代中“休眠” 1秒。我尝试了promisify(setTimeout),但是执行停止了。
public static string ProductNameValue
{
get
{
return ProductNameBox.Text;
}
}
在“等待”中进行“睡眠”的正确方法是什么?
答案 0 :(得分:1)
您的代码似乎是正确的,我已经像这样模拟了您的异步生成器:
const sleep = require('util').promisify(setTimeout);
async function* scan(arg) {
for (let i = 0; i < 4; i++) {
console.log(`yielding ${i}`);
await sleep(500);
yield i;
}
}
async function test()
{
for await (let item of scan({})) {
console.log(`got ${await item}`);
await sleep(1000);
}
}
test();
无论我在scan
中提供多少次迭代,执行都不会停止。
因此,导致问题的原因不是sleep
,您应该在其他地方查找。也许是mapper.scan
或这些http请求的问题,或者也许您只需要升级node.js(我在v10.11.0上)。
答案 1 :(得分:1)
我知道了。问题是我正在用 Jest 执行代码。当我正常执行代码时,上面的代码可以正常工作。感谢Noseratio的回答,我把目光投向了别处。我太专注于等待。