我的控制器中有以下功能。
RestRequestsSrvc.getUserDetail()
.then(
function (response) {
$scope.user.userDetail = response;
},
function (error) {
// TODO
});
如果我输入
console.log(RestRequestsSrvc.getUserDetail());
控制台记录一个承诺。我想设置一个变量的响应。如何修改我的代码以便获得响应而不是承诺?
答案 0 :(得分:1)
返回承诺,因为您的请求是异步的。
你应该等待回复,
将console.log放在回调函数中应打印您的信息。
RestRequestsSrvc.getUserDetail()
.then(
function (response) {
$scope.user.userDetail = response;
console.log(response);
},
function (error) {
// TODO
});
答案 1 :(得分:0)
您可以将console.log转换为promise。然后
RestRequestsSrvc.getUserDetail()
.then(
function (response) {
$scope.user.userDetail = response;
console.log(response);
},
function (error) {
// TODO
});
问题在于,当你调用函数时它会被执行但不会等待结果,这就是你得到承诺的原因。一旦请求完成执行,就会调用.then的东西。这就是你处理成功或错误回调的地方。
答案 2 :(得分:0)
对服务器的请求是异步的,这意味着您必须处理回调内的响应。
您可以使用async false标志,但如果您在代码中稍后执行了独立模块,则不建议这样做。