Présentation de Promise
L'objet Promise est une spécification proposée par le groupe de travail CommonJS pour fournir une interface unifiée pour les opérations asynchrones.
Alors, que sont les promesses ?
Tout d'abord, c'est un objet, ce qui signifie qu'il n'est pas utilisé différemment des autres Objets JavaScript et deuxièmement, il agit comme un proxy, agissant comme une opération asynchrone et Intermédiaire entre les fonctions de rappel . Il permet aux opérations asynchrones d'avoir une interface pour les opérations synchrones, de sorte que le programme ait un processus d'exécution synchrone normal et que les fonctions de rappel n'aient pas besoin d'être imbriquées couche par couche.
Pour faire simple, l'idée est que chaque tâche asynchrone renvoie immédiatement un objet Promise puisqu'elle revient immédiatement, le processus d'opération synchrone peut être utilisé. Cet objet Promises possède une méthode then qui vous permet de spécifier une fonction de rappel à appeler une fois la tâche asynchrone terminée. Par exemple, l'opération asynchrone f1 renvoie un objet Promise et sa fonction de rappel f2 s'écrit comme suit. (new Promise(f1)).then(f2);Préface
Utilisation
1. Gestion Rappel asynchrone
function Pro1(){ return new Promise(function(resolve, reject) { setTimeout(function(){ resolve('pro1') }, 300) }) } //调用 Pro1() .then(function(data){ console.log(data) //pro1 }) .catch(function(err){ throw new Error(err) })
2. Traitement synchrone de plusieurs fonctions asynchrones
function Pro1(){ return new Promise(function(resolve, reject) { setTimeout(function(){ resolve('pro1') }, 300) }) } function Pro2(){ return new Promise(function(resolve, reject) { setTimeout(function(){ resolve('pro2') }, 300) }) } //调用 var Pro = Promise.all([Pro1(), Pro2()]); Pro .then(function(data){ console.log(data[0], data[1]) //Pro1 Pro2 }) .catch(function(err){ throw new Error(err) })
3. Dépendances asynchrones Rappels asynchrones
détails du produit.
function Pro1(orderId){ return new Promise(function(resolve, reject) { setTimeout(function(){ var orderInfo = { orderId: orderId, productIds: ['123', '456'] } resolve(orderInfo.productIds) }, 300) }) } function Pro2(productIds){ return new Promise(function(resolve, reject) { setTimeout(function(){ var products = productIds.map(function(productId){ return { productId: productId, name: '衣服' } }) resolve(products) }, 300) }) } //调用 Pro1('abc123') .then(function(productIds){ console.log('商品id',productIds) return Pro2(productIds) }) .then(function(products){ console.log('商品详情',products) }) .catch(function(err){ throw new Error(err) })
4. Encapsuler la méthode de saisie unifiée ou la gestion des erreurs
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!