function retPromise(str) {
return new Promise(resolve=>{
resolve(str);
})
}
console.log(retPromise("first")) // 返回一个Promise对象
retPromise("x").then(str=>{
return retPromise("first")
}).then(str=>{
console.log(str) // 返回"first"
})
Pourquoi l'objet Promise est-il renvoyé puis résolu dans le prochain alors ?
La chaîne d'exécution de la seconde est-elle alors la seconde Promesse ?
L'idée de Promise est de traiter tous les codes synchrones et asynchrones comme du code asynchrone. La méthode then renverra une nouvelle
Promise
(appel en chaîne), et le premier paramètre de la méthode then. onfulfilled
est appelé une fois l'appel asynchrone de l'objetPromise
précédent terminéPromise
(链式调用),then方法的第一个参数onfulfilled
是在前一个Promise
对象的异步调用完成之后调用的这里还是牵扯到
Cela implique encore quelques implémentations dans le constructeurPromise
rrreeePromise
. Je viens d'implémenter une simple Promise il y a quelques jours. Voici le portail, j'espère qu'il vous sera utile🎜.Je ne suis pas un grand gars-_-Je vais décrire mon point de vue.
Ensuite, l'appel en chaîne prendra la valeur de retour du précédent then comme paramètre.L'implémentation interne de la fonction then de Promise consiste à effectuer le traitement de l'objet Promise sur la valeur de retour, par exemple, les types de données de base renverront directement les objets Promise via Promise.resolve. (données). S'il s'agit d'un objet Promise, exécutez sa fonction de résolution pour déclencher la fonction then suivante.
Vous pouvez décomposer cette chaîne d'exécution en :
Vous pouvez également utiliser setTimeout pour définir la fonction retPromise(str) sur un retour différé. Cela fonctionne mieux