我有一个异步功能,如果几秒钟内未发生任何事件,我想完成该功能。我已经超时完成了。代码是这样的:
fn: async function (inputs, exits) {
let finished = false;
let ws = await sails.helpers.createWebSocketConnection();
ws.on('message', async function onMessage(data) {
finished = true;
return exits.success(ws);
});
// If it's taking too long, return undefined
setTimeout(function () {
if (!finished) {
return exits.success();
}
}, 3000);
}
如您所见,我有一个布尔值以避免两次调用该回调,但这似乎并不是正确的方法。有没有更好的方法来知道帆中是否已经调用过exits.success()
?