Lorsque vous travaillez avec des requêtes et des promesses réseau à l'aide de NodeJS, il est possible de rencontrer des promesses imbriquées. Bien que cela ne soit pas faux en soi, il faudra peut-être enchaîner ces promesses pour un flux plus rationalisé.
L'extrait de code fourni illustre un scénario dans lequel plusieurs promesses imbriquées sont utilisées pour effectuer des appels d'API :
exports.viewFile = function(req, res) { var fileId = req.params.id; boxContentRequest('files/' + fileId + '/content', req.user.box.accessToken) .then(function(response) { boxViewerRequest('documents', {url: response.request.href}, 'POST') .then(function(response) { boxViewerRequest('sessions', {document_id: response.body.id}, 'POST') .then(function(response) { console.log(response); }); }); }); };
Pour enchaîner ces promesses, une simple modification s'impose :
exports.viewFile = function(req, res) { var fileId = req.params.id; boxContentRequest('files/' + fileId + '/content', req.user.box.accessToken) .then(function(response) { return boxViewerRequest('documents', {url: response.request.href}, 'POST'); }) .then(function(response) { return boxViewerRequest('sessions', {document_id: response.body.id}, 'POST'); }) .then(function(response) { console.log(response); }); };
La clé de cette approche est de renvoyer la nouvelle promesse de chacun puis rappeler :
.then(function(response) { return nextPromise; })
Cela garantit que la chaîne de promesses continue et se résout avec la valeur de la promesse "intérieure". En enchaînant ces promesses, vous pouvez créer une base de code plus lisible et maintenable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!