const globalInput = new Promise(resolve => {
function callback(msg) {
client.off('message', (msg) => callback(msg));
resolve(msg.content);
}
client.on('message', (msg) => callback(msg));
});
在這里,我使用訊息事件發射器將訊息內容發送回已決議的承諾中,并且我使用了 client.off。但是,即使在此之后,我仍然將 11 個事件偵聽器附加到客戶端警告。我哪里錯了?是的,這是實際附加事件發射器的唯一變數。
uj5u.com熱心網友回復:
.off()要求您將相同的函式參考傳遞給它(不是相同副本的不同函式)。因此,您可以通過使第一個訊息處理程式成為一個單獨的本地函式來修復您的代碼,然后您可以在.on()和 中參考該函式.off():
const globalInput = new Promise(resolve => {
function handler(msg) {
client.off('message', handler);
resolve(msg.content);
}
client.on('message', handler);
});
僅供參考,您也可以使用.once()它,它會自動為您處理洗掉。
const globalInput = new Promise(resolve => {
client.once('message', msg => {
resolve(msg.content);
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/369279.html
標籤:javascript 节点.js
