Node仍然相对较新,而且它具有非阻塞特性。
我为我想要制作的所需桌面应用程序的后端编写了一个API模块。调用每个方法时,它返回一个对象。下面是两个例子。
{ success: 1, response: RESPONSE }
{ success: 0, msg: ERROR_MSG }
1是成功的操作,0不是。
我想要做的是现在开始将后端API链接到主程序。我想从模块中调用一个函数,如果我的成功代码为1,则继续执行下一个操作,如果0等待所需的时间(1000ms)并重试操作,则所有操作都会阻止事件循环。
感谢。
答案 0 :(得分:1)
有很多方法可以做到这一点,它们都取决于你的具体情况。既然你不能发布代码,我们所能做的最好就是在黑暗中刺伤。这是一个返回对象的异步函数。它大约3/4的时间返回一个失败的对象。接下来,我们可以每秒调用此函数,直到它使用简单的setInterval
:
function asyncFn() {
return new Promise((resolve) => {
setTimeout(() => {
const options = [{
success: true,
response: 'RESPONSE'
},
{
success: false,
msg: 'ERROR_MSG'
}
]
resolve(Math.random() > .75 ? options[0] : options[1])
})
})
}
const interval = setInterval(() => {
asyncFn().then(result => {
if (!result.success) {
console.log("failed: ", result)
return
}
clearInterval(interval)
console.log("success: ", result)
})
}, 1000)
如果您的代码明显不同,那么您可能需要弄清楚如何发布一些代码或创建一个最小的示例。