ajax 提交请求后返回订单号,然后通过订单号再继续发起ajax请求直到结果为处理完成。

ajax 提交请求后返回订单号,然后通过订单号再继续发起ajax请求直到结果为处理完成。

$.ajax({ 
            url: "./", 
            type:"post", 
            data: data,
            dataType:"json",
            success: function(data){
                //这里拿到data订单号,然后怎么在这里发送查询处理结果的ajax请求,或者有什么更好的办法
            }
        })

因为我提交的请求过去,结果要等几分钟才会返回

阅读 4.6k
6 个回答

非要这样做的话
下面是伪代码

async function getInfo(id){
    const p = new Promise(function(resolve){
        $.ajax({ 
            url: "/", 
            type:"get", 
            data: {id:id},
            dataType:"json",
            success: function(data){  
                resolve(data.finished)
            }
        })
    })

    let finished  =  await p
 
    if(!finished){
        getInfo(id)
    }else{
        console.log("finished")
    }
}


$.ajax({ 
            url: "./", 
            type:"post", 
            data: data,
            dataType:"json",
            success: function(data){
                //这里拿到data订单号,然后怎么在这里发送查询处理结果的ajax请求,或者有什么更好的办法
                getInfo(data)
            }
        })

1.ajax中再嵌套一个ajax请求
2.在服务器端一起处理之后再返回

ajax后不处理数据又接一个新的ajax不是很蠢么?那直接叫服务器返回数据的时候直接拿订单号进行进一步处理后给你啊。
如果返回订单号是个列表你还要遍历,那得多少请求。。。页面还不崩溃。。。

非得这样做的话可以用Promise处理回调。避免回调嵌套,不美观。后端本可以一步做完的事为啥要两步呢。

推荐使用promise,如4楼

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题