屈服函数结果

Yield function result

本文关键字:结果 函数 屈服      更新时间:2023-09-26

我基本上想有一个函数来获取页面,然后在此基础上返回结果,这导致了以下问题:

所有GET方法都使用回调函数,这意味着函数将在结果出现之前结束。如何暂停线程直到触发回调,然后在主函数中返回回调结果?

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

正确答案:不要。异步是处理HTTP请求的正确方式。然而,在某些情况下,您希望在等待结果时进行阻止,因此在这些情况下:

使用async参数。

function somefunction() {
    var retVal;
    $.ajax({
         url:    "blabla.php",
         success: function(data) {
                      // modify data here
                      retVal = data;
                  },
         async:   false
    });
    return retVal;
}

与其从函数中返回一些东西,为什么不将回调作为参数呢?

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是单线程的,所以这确实是在不阻塞整个脚本的情况下完成类似任务的唯一合理方法。