Résoudre les fonctions de rappel

1. Tout d'abord nous devons comprendre l'enfer de rappel et rappel

(1) Fonction de rappel: Lorsque vous exécutez une fonction pour obtenir une certaine fonction, en passant une fonction comme argument, quand quelque chose se produit, il exécutera cette fonction

opération asynchrone est terminée avant une opération asynchrone pour attendre, que ce soit un événement de fonction de rappel ou autre, continuera à tomber dans le fonctionnement asynchrone de rappel imbriqué par une opération asynchrone pour attendre les résultats de ses autres opérations: (2) l'enfer de rappel , la complexité du processus, ce qui rend le code associé forte augmentation (le scénario le plus simple est que nous relions l'événement autonome, si notre premier événement autonome ce imbriqué dans un second événement autonome et ainsi de suite, la dernière et sortie, nous devons nous tourner vers l'arrière du dernier point avant de pouvoir déclencher une) [ce qui est très gênant, il est une solution]

Nous appelons un rappel, il est certainement aucun doute que la question asynchrone

es officiel examiné un certain nombre de scène asynchrone, a résumé un ensemble commun de modèle asynchrone, ce modèle peut couvrir la quasi-totalité des scénarios asynchrones

Quand une certaine chose opération asynchrone peut arriver, nous avons divisé en deux étapes:
Unsettled étape en attente
réglé a décidé à l' étape

programme ES6 divisé en trois parties: en attente résolus rejeté

en attente: en attente ( en attente) est l' étape en attendant, a déclaré que la situation est toujours en attente, le résultat final ne sont pas sortis
résolus: les résultats ont jamais été traités par étapes, les résultats indiquent la chose a eu lieu, et peut procéder selon la logique normale
rejeté: les résultats ont été rejetés dans la phase de décision, les résultats indiquent la chose a eu lieu, et est incapable de procéder conformément à une logique normale

2. décide l'enfer de rappel, il y a plusieurs façons Promise async / Attendre les    

promettre:

(. 1) est un constructeur promesse, promesse être nouveau nouveau pour obtenir une instance Promise ();

(2) sur la promesse, il y a deux fonctions, la détermination du nom (après la fonction de rappel de succès) et de rejet (après la fonction de rappel d'échec)

Son écriture:

Promesse nouvelle ((résolution, rejeter) => {

 Dans l'attente de l'étape

Il a décidé de pousser la détermination de l'étape de l'état en appelant la détermination de la fonction Promise

Poussé à rejeter l'Etat a décidé de rejeter l'étape en appelant la fonction Promise

Note: détermination et rejettent l'utilisation d'une seule, si l'utilisation de multiples, seule la première utile

})

Pro nouvelle nouvelle Promesse = const ((Resolve, Rejeter) => {
Resolve (succès)
Rejeter (échec) // effet de l' échec de jet sont les mêmes que pousser
})

toute méthode: Cette méthode retourne une nouvelle promesse d'objets, qui sont tous si le déclencheur succès de volonté objets Promesse, si elles ne parviennent pas à vaincre l'objet est une promesse

succès:

laisser fun1 = () => {
return new Promise ((résolution, rejeter) => {
résoudre ({
données: '1'
})
})
}

laisser fun2 = () => {
return new Promise ((résolution, rejeter) => {
résolution ({
données: '2'
})
})
}

Promise.all ([fun1 (), fun2 ()]) puis (([RES1, RES2]) => {.
console.log ( `RES1: $ {} res1.data, RES2: $ {} `res2.data)
})

 

 échec:

laisser fun1 = () => {
return new Promise ((résolution, rejeter) => {
résoudre ({
données: '1'
})
})
}

laisser fun2 = () => {
return new Promise ((résolution, rejeter) => {
rejeter ({
données: '2'
})
})
}

Promise.all ([fun1 (), fun2 ()]) puis (([RES1, RES2]) => {.
console.log ( `RES1: $ {} res1.data, RES2: $ {} `res2.data)
})

 

 () Course: une promesse quand un paramètre d'objet est terminé, quand vous revenez pour une utilisation complète des
résultats promettez objet, quel que soit le résultat du succès ou de l' échec

3. mots-clés async / Attendent sont tous les deux dans la nouvelle ES2016

async: simplifier la création de Promise

async fonction f ( ) { retour 1 }

Attendent: attente mot-clé await doit apparaître dans la fonction async

fonction f async () {
laisser promesse = nouvelle promesse ((résolution, rejeter) => {
setTimeout (() => détermination ( '你好'), 1000)
})
laisser result = await promesse d'
alerte (résultat)
}
f ( )

A propos de jouer à droite, sinon mot-clé dans la fonction await async va signaler cette erreur

 

Je suppose que tu aimes

Origine www.cnblogs.com/zhangli123/p/12577235.html
conseillé
Classement