rap*_*2-h 7 javascript asynchronous functional-programming node.js async-await
这是一些代码(这是一个过于简化的示例,我知道这很愚蠢):
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function test() {
[1, 2, 3].map(() => {
console.log('test');
await sleep(1000);
});
}
test();
Run Code Online (Sandbox Code Playgroud)
目的是:
test然后等待一秒钟test然后等待一秒钟test然后等待一秒钟但是运行此代码会导致失败:
等待是保留字
我知道我可以通过使用for循环来解决它:
async function test() {
for(let i = 0; i < 3; i++) {
console.log('test');
await sleep(1000);
}
}
Run Code Online (Sandbox Code Playgroud)
但是有没有办法以一种更加“实用”的方式来做到这一点。我的意思是,我可以避免for循环并在地图内等待吗?
const result = await [1, 2, 3].reduce(async function(prom, v){
const result= await prom;
await sleep(1000);
result.push(v);
return result;
}, Promise.resolve([]));
Run Code Online (Sandbox Code Playgroud)
您可以减少以创建承诺链。但是,在您的简单情况下:
(a=b=>(b==2||(console.log("test"),setTimeout(a,1000,b+1))))(0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3714 次 |
| 最近记录: |