[英]How to use await with setTimeout and setInterval?
我有一個函數createSession來獲取返回會話對象的用戶。 createSession要么返回用戶,要么拋出字符串異常。 我的代碼如下,如果session成功(這意味着我有用戶)繼續代碼。
但是我不知道用戶何時可用,因為其他資源也要求它。 因此,我希望修改我的代碼,它會嘗試讓用戶處於超時狀態,以免每1秒嘗試一次,直到達到超時30秒。
async function callTest() {
const capabilities = {
type: {
chrome: 2
}
}
var session = await working.createSession(capabilities)
if(!session) return
callTest()
// remaining code goes here
}
我雖然在承諾中使用setTimout但問題是我不能在正常函數中使用await。 有人可以幫我修理我的代碼嗎?
var checkAuth = function(capabilities) {
return new Promise(function(resolve) {
var id = setInterval(function() {
var session = await working.createSession(capabilities)
if (session) {
clearInterval(id);
resolve(id);
}
});
}, 10);
});
}
您可以嘗試像這樣使用它,它應該工作得很好
var checkAuth = function(capabilities) {
return new Promise(function(resolve) {
setInterval(async function() {
var session = await working.createSession(capabilities)
if (session) {
clearInterval(id);
resolve(id);
}
}, 10);
});
}
您應該在setInterval
中將async關鍵字添加到函數定義中,因為await
只能在async
函數中使用。 更新:也將,10
參數從Promise
定義移動到setInterval
一個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.