0

我希望有人可以为我解释这一点。我调用了一个带有嵌入式 ajax 调用的函数:

getstuff(indata, function (out1,out2) {
            aaa= out1;
            bbb=out2;
            })

getstuff 中的成功函数如下所示:

success: cb

当我们完成时,“aaa”填充了数据,“bbb”是“成功”,这是什么

success(data, textStatus, jqXHR)

说他们应该是。但我真的不确定 out1 和 out2 如何知道它们已设置。当这些是输入参数时,函数如何知道 out 1 是数据而 out2 是 textStatus ?我很好的解释会有很长的路要走。谢谢

4

1 回答 1

1

这些值在内部传递$.ajax给回调。这正是您已经发布的方式,在内部某处,回调被称为success(data, textStatus, jqXHR). data,textStatus并且jqXHR只是变量。

您可以为参数指定任何名称。函数知道这out1data因为它是传递给函数的第一个参数,所以它将名称out1与它相关联。类似的out2

这是一个非常简单的例子:

function foo(callback) {
    var someData = 'someValue';
    callback(someData);
}

foo(function(someParameterName) {
    console.log(someParameterName);
});

函数参数的名称与传递的变量名称没有任何关系,回调并没有什么神奇之处,它们只是函数,它们的工作方式没有任何不同。如果你看到这个

var a = 1,
    b = 2;

function foo(out1, out2) {
    console.log(out1, out2);
}

foo(a, b);

你想知道为什么out1is1out2is2吗?

于 2012-08-04T15:47:03.193 回答