【发布时间】:2017-10-29 14:31:35
【问题描述】:
我想用 async 和 await 实现瀑布。
我通过this尝试了一些操作
主要目的是如果上述任何一个异步拒绝错误,我确实想调用异步函数。
var cont = 1;
function signin (){
console.log(cont);
// i am doing some async
return new Promise((a,b)=>{
if((++cont) === 4){
setTimeout(1000*cont,b,'ab');
} else {
setTimeout(1000*cont,a,'ab');
}
})
}
async function main() {
try {
await signin;
await signin;
await signin;
await signin;
await signin;
await signin;
await signin;
return signin();
} catch(er){
return er;
}
}
main()
在上面,没有按预期工作。 我的预期输出是什么
1
2
3
4
在第四个之后,它应该一直中断。并且不应调用其余的登录尝试。
所有登录必须按顺序执行。就像瀑布一样。
有什么帮助吗?
【问题讨论】:
-
不应该是
await signin();在你的主要功能你只有await signin;。 -
为什么stackoverflow.com/a/40593103/1503495 没有
call那些功能?对不起,如果这很愚蠢,但我刚刚开始,异步并等待。 -
即使使用
await signin();,它也不会出现在 1 之后。 -
我不知道,但您的代码根本没有任何意义。
setTimeout(1000*cont,b,'ab');也是错误的。第一个参数是函数,第二个参数是以毫秒为单位的时间。请阅读:w3schools.com/jsref/met_win_settimeout.asp -
仅供参考,
async/await将成为 ES2017 的一部分。它不是 ES7 (ES2016) 的一部分。
标签: javascript asynchronous ecmascript-2017