Я использую этот поток авторизации для получения токена доступа для Spotify API.Первое обещание в этом наборе связанного обещания устанавливает access_token
, если нет ошибки, где оно регистрирует ошибку на консоли.Второе обещание просто распечатывает недавно установленный токен доступа.Я думал, что этот код будет препятствовать выполнению кода во втором .then()
до тех пор, пока не будет решено первое обещание.
console.log("PRE ACCESS TOKEN: " + spotifyApi.getAccessToken())
spotifyApi.clientCredentialsGrant().then(
function(data) {
console.log("The access token expires in " + data.body["expires_in"]);
console.log("The access token is " + data.body["access_token"]);
// Save the access token so that it's used in future calls
spotifyApi.setAccessToken(data.body["access_token"]);
},
function(err) {
console.log(
"Something went wrong when retrieving an access token",
err.message
);
}
).then(
console.log("POST ACCESS TOKEN: " + spotifyApi.getAccessToken())
);
Но я получаю следующий вывод:
PRE ACCESS TOKEN: undefined
POST ACCESS TOKEN: undefined
Это означает, что второе обещание, в течение второго .then()
, выполняется перед первым обещанием.Почему это происходит?Я думаю, что у меня, вероятно, есть фундаментальное недопонимание того, как работают обещания в Javascript, но я не уверен точно, что я не понимаю.