letitbesqzr
V2EX  ›  问与答

如何将原本是 ajax callback 执行的几个回调修改成按顺序执行。

  •  
  •   letitbesqzr · Dec 10, 2017 · 2559 views
    This topic created in 3077 days ago, the information mentioned may be changed or developed.
    • 不考虑使用同步
    • 尽量对代码改动越少越少
    • 尽量使用 jquery 的 Deferred 实现

    地址: http://jsfiddle.net/1807cb0f/4/

    希望达到的效果:

    9 replies    2017-12-13 13:27:05 +08:00
    veike
        1
    veike  
       Dec 10, 2017
    更改 DOM 结构,每条 ajax 请求执行成功后把成功信息插入到当前节点后面。
    letitbesqzr
        2
    letitbesqzr  
    OP
       Dec 10, 2017
    @veike dom 结构只是意思下,我意思是 要顺序执行 顺序的去执行这些 ajax
    veike
        3
    veike  
       Dec 10, 2017
    @letitbesqzr 你是要当每条返回成功信息之后,才进行下一条是这意思吗
    470326964
        4
    470326964  
       Dec 10, 2017
    不可能
    beforeSend:function(){
    $("#sqzr").append(e + "开始 his 预结算<br/>");
    },
    success:function(data){
    $("#sqzr").append(e + "完成 his 预结算<br/>");
    ybjs(e);
    }
    这里不是同步肯定会有其他的请求插进去
    470326964
        5
    470326964  
       Dec 10, 2017
    Yuigahama
        6
    Yuigahama  
       Dec 10, 2017
    可以看一下 promise async/await
    就是用来干这个的
    Trim21
        7
    Trim21  
       Dec 10, 2017
    async
    xqdoo00o
        8
    xqdoo00o  
       Dec 10, 2017
    let sequence = Promise.resolve();
    sequence = sequence.then(//deal item)
    suduo1987
        9
    suduo1987  
       Dec 13, 2017
    his、医保……
    你按照顺序的话有两种办法
    1、在 ajax 里面设置同步模式
    2、异步模式的话,在 beforeSend 里面声明 Deferred,在 complete 里面释放,外层用$.when().then()调用
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5536 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 08:22 · PVG 16:22 · LAX 01:22 · JFK 04:22
    ♥ Do have faith in what you're doing.