【发布时间】:2017-10-25 07:55:58
【问题描述】:
我确定我错过了一些关于同步性的明显和基本的东西,但我无法理解这应该如何工作......
$scope.foo=[];
getFoo(url) {
$scope.foo=$http.get(url).then(function (response) {
var foo = [];
//process response to get foo array. Console.log returns as expected here.
return foo;
});
}
这似乎只是将$scope.foo 设置为promise 对象。我错过了什么?我如何在其余代码中实际使用承诺的结果?
【问题讨论】:
-
您在 then 回调中访问它,因此将其分配给您的范围。除非您可以使用 await 关键字。 Promise 是异步的,因此您不会返回并期望以同步方式使用该返回值。这只是将一个值返回给下一个链接的 .then。
-
正如您所写,您已经知道在哪里处理和记录响应。有什么问题?
-
$scope.foo是另一个承诺,所以等待它:$scope.foo.then(…) -
response 是 get(url) 返回的数据。我也没有看到问题。
return response;可能就是你想要的... -
你是对的,
$scope.foo=$http.get(url).then(...)将$scope.foo设置为promise 对象,你不需要从你的回调中返回,异步代码不会在这个意义上返回回调的返回值,这就是存在回调的原因:用那里的值做一些事情。尝试设置$scope.foo = response.data;看看它是如何工作的
标签: javascript asynchronous promise angular-promise