我需要通过Socket.IO(客户端)通过websockets运行一系列调用.由于我没有使用$ .ajax,jQuery的延迟函数也不会集成,我将不得不手动处理promises.随着每个websocket调用,我通过回调,我很快就会看到这个项目如何失控.这是我的websocket调用如何工作的简化示例(不包括所有连接处理代码):
function js2node(nodeFunction, data, callback){
socket.emit('incoming', nodeFunction, data, callback);
}
function sampleServerCall(){
js2node('sampleCall', 'something', 'sampleCallback');
}
function sampleCallback(json){
// Handle data
}
sampleServerCall();
Run Code Online (Sandbox Code Playgroud)
我将与服务器进行相当多的讨论,所有调用都将是异步的,但有些需要按特定顺序返回.输入jQuery deferred.这是一些工作代码:
var deferredArray = [];
$(function(){
$.when( // Any order
getData1(),
getData2()
).then(function(){ // Must have responses from dataCallback1 and dataCallback2 before doing this...
$.when( // Any order
getData3(),
getData4()
).then(function(){ // Must have responses from dataCallback3 and dataCallback4 before doing this...
getData5();
});
});
});
function getData1(){
js2node('data1', 'something', 'dataCallback1');
deferredArray[0] = new $.Deferred(); …
Run Code Online (Sandbox Code Playgroud)