ajax async 已弃用功能的替代方法是啥?

Posted

技术标签:

【中文标题】ajax async 已弃用功能的替代方法是啥?【英文标题】:what alternative for ajax async deprecated feature?ajax async 已弃用功能的替代方法是什么? 【发布时间】:2022-01-24 00:19:27 【问题描述】:

使用以下 ajax 函数调用以 JSON 格式返回数据的 API 端点不会将 results 的值从 undefined 更改为 json['info'] 中的值,但将 async 更改为 false 时会发生这种情况。

检查包含此功能的网页,显示此功能已被弃用,并且没有其他建议。

如何在不编写更多代码来解析服务器返回的数据的情况下读取 json 数据?

function update_info()

    var results ;
    $.ajax(
        type: 'GET',
        url : "ip:port/api/info",
        async:true,
        success: function(data) 
            results = data['info'];
            //console.log(results);
        
    );
    console.log(results);
    return results;
   

This 似乎不符合我的目标,因为数据是从 API 返回的,而不是网页源代码返回到 ajax。

【问题讨论】:

这能回答你的问题吗? How to return the response from an asynchronous call 我不这么认为,因为该函数没有返回所需的信息,而且这仍然不能解决不使用async: true如果我错了请纠正我 你错了。您要解决的问题是如何将异步操作视为同步操作。这是解决问题的错误方法。拥抱操作的异步特性。在显示的代码中,特定情况是您在函数内进行 AJAX 调用,并希望从该函数返回该调用的结果。链接副本中的问题和答案使用该确切场景作为示例。异步操作没有“解决方法”,解决方案是保持它们异步。 【参考方案1】:

正如 David 所说,您应该使用异步调用

       function update_info()
       
            
            return $.ajax(
                type: 'GET',
                url : "ip:port/api/info",
                async:true,
                success: function(data)  data;
            );
       async function f1() 
            var results = await update_info();
            console.log(results['info']); 
       
       f1();

这将在完成后返回 ajax 调用,然后您可以从中获取 info 数据

【讨论】:

【参考方案2】:

您可以同时使用这两种方法,也可以使用.thenawait

我附上了以下示例的源代码。

ajaxRequest("https://httpbin.org/ip").then(result => 
  console.log('Your PC Address is:' + result.origin);
);

let myPcRes = await ajaxRequest("https://httpbin.org/ip");
console.log('Your PC Address is from the await approach: ' + myPcRes.origin);

您需要将results$.ajax 进行比较

并返回成功方法的响应。

希望对您有所帮助, https://jsfiddle.net/tru5k6qz/

【讨论】:

以上是关于ajax async 已弃用功能的替代方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

已弃用的 Hibernate.createClob(Reader reader, int length) 的替代方法是啥

UseConcMarkSweepGC 已弃用,它的替代品是啥?

已弃用的 google plus api 的替代解决方案是啥?

jQuery.ajax() 方法的异步选项已弃用,现在怎么办?

AsyncTask 替代背景图像下载? (AsyncTask ---------已弃用)

OnActivityResult 方法已弃用,有啥替代方法?