Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 链接传递信息的jquery ajax调用的最佳方法_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 链接传递信息的jquery ajax调用的最佳方法

Javascript 链接传递信息的jquery ajax调用的最佳方法,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在进行几个异步ajax调用,这些调用必须按照特定的顺序执行,并且必须相互传递信息。以下是我当前方法的MWE。即使有三个API调用,这也有点像噩梦。使用5,不可能排列错误工作流或移动函数(屏幕空间也用完了)。有没有更好的方法来实现同样的结果 /* * API Call to get user */ $.ajax({ type: 'POST', url: `robin.hood/get_user`, data: JSON.stringify({"name&q

我正在进行几个异步ajax调用,这些调用必须按照特定的顺序执行,并且必须相互传递信息。以下是我当前方法的MWE。即使有三个API调用,这也有点像噩梦。使用5,不可能排列错误工作流或移动函数(屏幕空间也用完了)。有没有更好的方法来实现同样的结果

/*
 * API Call to get user
 */
$.ajax({
    type: 'POST',
    url: `robin.hood/get_user`,
    data: JSON.stringify({"name":"Joe Dirt"}),
    headers: {Authorization: 'Bearer ' + token},
    datatype: 'json',
    contentType: 'application/json; charset=utf-8',
    success: function (data, text_status, jq_xhr) {
        /*
         * Assume one user is returned only
         */
        let user_id = data;

        /*
         * API Call to get the bank balance of the user
         */
        $.ajax({
            type: 'POST',
            url: `robin.hood/get_user_balance`,
            data: JSON.stringify({"user_id":user_id}),
            headers: {Authorization: 'Bearer ' + token},
            datatype: 'json',
            contentType: 'application/json; charset=utf-8',
            success: function (data, text_status, jq_xhr) {
                /*
                 * We record the balance
                 */
                let balance = data;

                /*
                 * We invest in Gamestop stock
                 */
                $.ajax({
                    type: 'POST',
                    url: `robin.hood/buy_gamestop_stock`,
                    data: JSON.stringify({"user_id":user_id, "amount":balance}),
                    headers: {Authorization: 'Bearer ' + token},
                    datatype: 'json',
                    contentType: 'application/json; charset=utf-8',
                    success: function (data, text_status, jq_xhr) {
                        /* STONKS!!! */
                        });
                    },
                    error: function (jq_xhr, text_status, error_thrown) {
                        /* NO STONKS */
                    }
                });
            },
            error: function (jq_xhr, text_status, error_thrown) {
                /* NO STONKS */
            }
        });
    },
    error: function (jq_xhr, text_status, error_thrown) {
        /* NO STONKS */
    }
});
相关但不太清楚的问题:


  • $.ajax
    返回一个Thenable,这意味着您可以在
    异步
    函数中等待它,这比嵌套回调更容易管理:

    异步函数运行(){
    试一试{
    const user=wait$.ajax({
    键入:“POST”,
    url:`robin.hood/get\u user`,
    数据:JSON.stringify({
    “姓名”:“乔·迪特”
    }),
    标题:{
    授权:“持票人”+代币
    },
    数据类型:“json”,
    contentType:'application/json;charset=utf-8',
    })
    const balance=await$.ajax({
    // ...
    })
    const data=await$.ajax({
    // ...
    })
    /*石头*/
    }捕获(e){
    /*没有石头*/
    }
    }
    
    run()
    我知道
    const user=…
    部分后面的内容基本上取代了
    success:…
    我遇到的问题是,例如,如果我有两个API调用,并且两个调用都可以抛出一个,例如ID\u NOT\u FOUND错误,我如何用
    try…catch来处理这个问题?我是否可以删除“尝试并使用ajax”
    success:…error
    ?我不知道如果将异步和回调混合在一起会发生什么,但这可能不是最好的主意,最好只使用一个。我将每个api调用放在自己的异步函数中(
    getUser
    getBalance
    ,等等),每个函数都有自己的try/catch用于错误处理。然后您就可以
    constuser=await getUser();const balance=等待getBalance(用户)