我有一个函数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);
});
}
答案 0 :(得分:1)
您可以尝试使用它,它应该可以正常使用
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
一个