我基本上想要一个能够获取页面然后根据它返回结果的函数,这会导致以下问题:
所有GET方法都使用回调函数,这意味着函数将在结果出现之前结束。如何在回调被触发之前暂停线程,然后在我的main函数中返回回调的结果?
function someFunction(){
$.get(
"blabla.php",
function(data) {
// This data is supposed to be returned by "someFunction"
}
)
return //the data we retrieved from 'blabla.php'
}
你将如何实现这一目标?
编辑:我从lua知道这个概念,但我不完全确定是否会有人称之为“产生功能结果”。如果我错了,请纠正我。答案 0 :(得分:1)
正确答案:不要。异步是执行HTTP请求的正确方法。但是,有些情况下您希望在等待结果时阻塞,因此在这些情况下:
使用async
参数。
function somefunction() {
var retVal;
$.ajax({
url: "blabla.php",
success: function(data) {
// modify data here
retVal = data;
},
async: false
});
return retVal;
}
答案 1 :(得分:1)
而不是从函数中返回一些内容,为什么不将回调作为参数?
function someFunction(callback) {
$.get("blabla.php", function (data) {
callback(data);
});
// Or simply $.get("blabla.php", callback) if the data need not be modified before calling the callback.
}
然后可以这样使用:
someFunction(function (data) {
alert("Data received!");
});
JavaScript是单线程的,所以这是完成这样的事情而不阻塞整个脚本的唯一合理方法。