L'objet Promise est une interface unifiée fournie par le groupe de travail CommonJS pour la programmation asynchrone. C'est le support natif de Promise fourni dans ECMAScript6. L'utilisation de Promise peut éviter des couches d'imbrication de fonctions de rappel. et fournit également La spécification facilite le contrôle des opérations asynchrones. Fournit des méthodes telles que le rejet, la résolution, puis et la capture.
Utilisez PROMESSE
Promise est un objet natif après ES6 Il suffit d'instancier l'objet Promise pour l'utiliser directement.
Instancier la promesse :
var promise = new Promise(function (resolve, reject) { console.log('begin do something'); if (Math.random() * 10.0 > 5) { console.log(" run success"); resolve(); } else { console.log(" run failed"); reject(); } });
Une fonction de méthode de rappel (resolve,reject) est définie ici. Si elle réussit, la résolution sera appelée. Si elle échoue, le rejet sera appelé.
Promise.prototype.then est le rappel après l'exécution de Promise. Vous pouvez utiliser la méthode then pour spécifier respectivement les rappels de résolution et de rejet.
promise.then(function () { console.log(' resolve from promise'); }, function () { console.log(' reject from promise'); });
Résultat de l'exécution un :
begin do something run success resolve from promise
Résultat de l'exécution deux :
begin do something run failed reject from promise
Utilisez PROMISE pour les requêtes réseau
getRequest = function (url) { var promise = new Promise(function (resolve, reject) { var request = require('request'); request(url, function (error, respones, body) { if (error) { reject(error); return; } if (respones.statusCode == 200) { resolve(body) } else { reject(respones.status); } }); }); return promise; }; getRequest("https://github.com/").then(function (result) { console.log(result); }, function (error) { console.error('error', error); });
Utilisez Promise pour effectuer des requêtes réseau, et vous pouvez également utiliser Promise pour implémenter des requêtes Ajax lors de la navigation.
Adresse du code : https://github.com/jjz/node