jQuery中$.get()方法是否有对应的同步版本?
关于jQuery $.get同步替代方案的问题解答
你的代码里getText函数本身没有返回值,再加上$.get是异步请求,当你执行var text = getText(...)时,请求还没完成就已经执行了console.log(text),所以控制台输出undefined。
jQuery提供了同步请求的实现方式,你可以用$.ajax并设置async: false来替代$.get,这就是类似的同步版本:
var text = getText("https://www.google.com/search?q=search"); console.log(text); function getText(url) { let result; $.ajax({ url: url, type: 'GET', async: false, success: function(data) { result = data; } }); return result; }
不过要注意:同步请求会阻塞浏览器主线程,在请求完成前用户无法和页面交互,容易造成页面卡顿甚至假死,所以非必要场景不建议使用。
现在更推荐用异步的现代处理方式,比如利用$.get返回的Promise结合async/await,既不阻塞页面,又能按预期顺序获取结果:
async function getText(url) { const data = await $.get(url); return data; } // 调用方式 (async function() { var text = await getText("https://www.google.com/search?q=search"); console.log(text); })();
内容的提问来源于stack exchange,提问作者frosty
相关产品推荐
相关产品推荐

