[英]Callback Eventlistener
我是Node的新手,我在繞回調問題時有些麻煩。
我正在嘗試使用單個函數來打開或關閉組件的連接,具體取決於它的當前狀態。
if(state){
component.open(function(){
component.isOpen(); //TRUE
});
}
else{
component.isOpen(); //Always false
component.close(); //Results in error, due to port not being open
}
基本上,我試圖等待一段不確定的時間再關閉連接,並且我想使用單數切換功能將其關閉。 從我所看到的,保證端口打開的唯一方法是在回調內部。 有沒有辦法讓回調監聽發生的某種事件? 還是在回調中接受輸入的其他一些常規做法?
回調應該被調用一次,而事件可以多次按需調用方法,所以您的用例在我看來就像您想按需打開和關閉連接一樣,也可以多次...
為此,最好使用EventEmitter ,它是nodejs的一部分,並且確實易於使用。
例如:
var EventEmitter = require('events').EventEmitter;
var myEventEmitter = new EventEmitter();
myEventEmitter.on('toggleComponentConnection', function () {
if (component.isOpen()) {
component.close();
}
else {
component.open(function(){
component.isOpen(); //TRUE
});
}
});
...
// Emit your toggle event at whatever time your application needs it
myEventEmitter.emit('toggleComponentConnection');
否則,如果您選擇使用回調,則需要牢記函數作用域和javascript 閉包 。
function toggleComponentConnection(callback) {
if (component.isOpen()) {
component.close(function () {
callback();
});
}
else {
component.open(function(){
component.isOpen(); //TRUE
callback();
});
}
}
...
// Call your toggle function at whatever time your application needs it
toggleComponentConnection(function () {
component.isOpen();
// make sure your application code continues from this scope...
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.