J'ai une chaîne de promesses qui doit appeler $http
à mi-chemin de la chaîne et transmettre la promesse qui en résulte au prochain manieur. Le problème est mon .then()
fonction de succès semble être envelopper la promesse $http
retourné dans une autre promesse, résultant de ma promesse http étant traitée comme une charge utile. Donc, quand il se résout dans le prochain lien dans la chaîne, je reçois une promesse plutôt que la réponse http.
var statusPromise = Auth.getUserStatus();
var tokenPromise = statusPromise.then(function(status) {
if (status && status.accesstoken) {
return status.accesstoken;
} else {
return null;
}
});
var httpPromise = tokenPromise.then(function(accesstoken) {
console.log('access token', accesstoken);
var params = {
page: page,
limit: limit
};
if (accesstoken) {
params.accesstoken = accesstoken;
}
return $http.get(apiUrl + 'scenes/' + filter + '/', {
data: $.param(params),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
});
var doMoreStuffPromise = httpPromise.then(function(response) {
console.log(response); // this logs the promise as the payload, not the http response
return response.data;
});
return doMoreStuffPromise;
Comment puis-je enchaîner la promesse $http
dans ma chaîne?
Intéressant. Je n'ai jamais vu ce problème dans la nature, et je l'avais considéré comme purement théorique :-) – Bergi