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】:您可以同时使用这两种方法,也可以使用.then
或await
。
我附上了以下示例的源代码。
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() 方法的异步选项已弃用,现在怎么办?