【发布时间】:2018-12-05 20:37:29
【问题描述】:
使用 POST 方法请求了一个 spotify 访问代码。为响应分配了一个变量。然后,尝试使用 GET 方法直接访问令牌。
{
angular.module('app')
.controller('GameController', function($http){
const $ctrl = this;
$http.post('/access-token').then(function(response){
$ctrl.tokenResponse = response.data;
$ctrl.myToken = $ctrl.tokenResponse.access_token;
console.log(response);
});
$http({
url: 'https://api.spotify.com/v1/tracks?ids=6rqhFgbbKwnb9MLmUQDhG6',
method: 'GET',
data: {
'Authorization': `Bearer ${$ctrl.myToken}`
}
}).then(function(response){
console.log(response.data);
$ctrl.tracks = response.data;
console.log($ctrl.tracks);
})
});
};
看起来 GET 方法无法识别我的 POST 方法中的变量。我的 ${$ctrl.myToken} 即将出现未定义。 “数据”:{“授权”:“承载未定义”}。但是,当我在我的 GET 方法之前 console.log POST 结果时,它会很好地记录访问代码。
不确定如何让我的 GET 方法从我的 POST 方法中读取响应。
所有这些代码都在我的控制器中。
【问题讨论】:
-
第一个请求完成后才能发出第二个请求
-
将第二个请求放在第一个的
.then函数中。否则,第二个请求会在第一个请求完成之前运行(关键字:异步) -
我尝试将 get 请求移到 .then 中,但仍然收到“未定义承载”。
-
@charlietfl - 你能详细说明一下吗?我不确定如何定位我的 GET 方法以确保 POST 在运行之前已经完成。
-
正如其他人在上面评论的那样,您只需将您的 get 请求放在您的 post 请求的
then函数中。
标签: javascript angularjs api post get