收益函数结果

时间:2013-08-04 19:00:54

标签: javascript jquery function return yield

我基本上想要一个能够获取页面然后根据它返回结果的函数,这会导致以下问题:

所有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知道这个概念,但我不完全确定是否会有人称之为“产生功能结果”。如果我错了,请纠正我。

2 个答案:

答案 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是单线程的,所以这是完成这样的事情而不阻塞整个脚本的唯一合理方法。