An-*_*oid 4 node.js promise socket.io typescript
是否可以使用io套接字执行类似的操作:
socket.on('event.here', async (data) => {
const result:any = await webservice();
}
Run Code Online (Sandbox Code Playgroud)
我不太确定该怎么做?
是的,您可以执行此操作,但这取决于您要执行的操作。如果您希望能够在回调中等待一些异步操作,那么就不妨了。但是,如果您希望下一个事件在上一个事件的处理完成之前不触发,那么它将无法正常工作。
这是一个小模拟:
let socket = {
listeners: [],
on: function(name, callback) {
if (!this.listeners[name]) {
this.listeners[name] = [];
}
this.listeners[name].push(callback);
},
emit: function(name, data) {
if (this.listeners[name]) {
this.callListeners(this.listeners[name], data);
}
},
callListeners: function(listeners, data) {
listeners.shift()(data);
if (listeners.length) {
this.callListeners(listeners, data);
}
}
}
function returnsPromise() {
return new Promise((resolve) => {
setTimeout(() => {
resolve();
}, 1000);
})
}
socket.on('event.here', async (data) => {
const result = await returnsPromise();
console.log('after await');
});
socket.on('event.here', async (data) => {
const result = await returnsPromise();
console.log('after await1');
});
socket.emit('event.here', {});
Run Code Online (Sandbox Code Playgroud)
您可以在这里使用它来感受一下,实际上SocketIO与它的工作能力无关。
| 归档时间: |
|
| 查看次数: |
9048 次 |
| 最近记录: |