我正在尝试学习AngularJs,我在下面的图片中看到了这个代码。作者正在做$http.get("url").then(function()...
。我不明白的是onUserComplete
函数接受response
参数,但在then
函数中,他没有传递此response
参数,并且该示例有效。根据我在JavaScript中的理解,我们应该这样做:then(onUserComplete(response)) ;
任何人都可以向我展示它吗?
答案 0 :(得分:2)
我建议您再次查看文档:{{3}} $ http
但是长话短说:
。然后基本上等待承诺返回,这意味着来自服务器的响应到了。
响应包括来自服务器的数据的参数数据(让我们说json)
然后将excpect函数作为参数,因此函数名称替换为函数,在您的情况下它是onUserComplete。
看看类似的例子:
// Simple GET request example :
$http.get('/someUrl').
success(function(data, status, headers, config) {
// this callback will be called asynchronously
// when the response is available
}).
error(function(data, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
答案 1 :(得分:1)
then
函数将使用响应(实际上是数据)对象来调用您的回调。
答案 2 :(得分:1)
.then()
函数将回调函数作为其参数。回调函数存储在变量onUserComplete
中。因此,当作者写.then(onUserComplete)
时,onUserComplete
未被调用,它只是作为参考传递。
答案 3 :(得分:0)
.then
需要一个函数作为参数,这正是onUserComplete
的原因。
用一种简单的语法,你会看到:
.then(function (response) {
$scope.user = response.data;
});
以更常见的方式,使用匿名语法:
.then(response =>
$scope.user = response.data;
);
这就是它的全部内容。 onUserComplete
只是替代品。