我有一个像这样的标准socket.io函数:
function listen() {
socket.on("event", function (data) {
//return data ????
});
}
我想在另一个外部函数中得到这个函数的结果:
App.listen(function(data) {
//getting the result of listen() when a event is trigerred
});
我该怎么做呢?
答案 0 :(得分:0)
与其他事件一样socket.on
不能像那样工作。您只能捕获参数,而不能捕获返回值。
App.value = null;
App.set_value = function(value){
this.value = value
};
function listen() {
socket.on("event", function (data) {
App.value = data;
//or
App.set_value(data);
//Last two calls will work
//return data ???? will not work
});
}
或者你也可以这样做。
function listen(App) {
socket.on("event", function (data) {
App.value = data;
//or
App.set_value(data);
//Last two calls will work
//return data ???? will not work
});
}
listen(App)
如果您需要继续回调事件链或异步操作,那么您可以这样做。
App.do_something = function(data, func){
AsyncFunction(data, func);
};
function listen() {
socket.on("event", function (data) {
App.do_something(data, function(data){
//Using async data.
});
});
}
listen(App);
如果您正在使用Express(或其他一些框架),可能还有其他方法可以实现此目的。
答案 1 :(得分:0)
感谢您的回复,它帮助我构建了自己的解决方案。
这是我做的:
App.on = function(callback) {
App.socket.on(this.reference, callback);
}
我称之为一个简单的倾听者:
App.on(function(data) {
console.log(data);
});
只需从App.on传递一个回调函数,将此函数传递给socket.on,然后在App.on中执行此函数中的任何操作