我已经定义了这样的承诺......
const result = await Promise.race([
new Promise(resolve => {
consumer.run({
eachMessage: ({ message }) => {
const data = JSON.parse(message.value.toString());
if (data.payload.template
&& data.payload.template.id === '...'
&& data.payload.to[0].email === email) {
console.log('Should resolve!')
resolve(data.payload.template.variables.link);
console.log('resolved');
consumer.pause();
consumer.disconnect();
}
},
});
}),
new Promise((_, reject) => setTimeout(reject, 3000))
]);
console.log('result is ', result);
return result;
我可以解决,但它最后没有打印结果,似乎超时和实际承诺都没有按预期工作?这是为什么?我怀疑它与在 kafka js 回调中使用 resolve 有关?
更新:似乎它Promise.race()
没有解决,但为什么呢?