小编Cau*_*ect的帖子

使用jQuery延迟管理同步和异步JavaScript函数

我需要通过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)

javascript jquery asynchronous jquery-deferred

2
推荐指数
1
解决办法
793
查看次数