2017-10-03 4 views
-1

Je ne comprends pas pourquoi la première fonction setTimeout fonctionne mais pas la seconde. Le premier est commenté lorsque je lance le second setTimeout. Mais au lieu de résoudre après 3 secondes, il se résout immédiatement. Je suis novice en matière de promesses et le tutoriel sur lequel je travaille utilise beaucoup les promesses de setTimeout.Promesse JavaScript résolue avec setTimeout

let promise = new Promise((resolve, reject) => { 
 

 
    /* why does setTimeout work with this one... */ 
 
    setTimeout(() => resolve('Job\'s done!!!'), 3000); 
 

 
    /* but not with this one */ 
 
    setTimeout(resolve('done'), 3000); 
 
    }); 
 

 
    promise.then(
 
    result => alert(result) 
 
);

+2

parce que l'on appelle la deuxième méthode et retourne ce qu'il retourne à être appelé par setTimeout .... Oui – epascarello

Répondre

2
/* why does setTimeout work with this one... */ 
setTimeout(() => resolve('Job\'s done!!!'), 3000); 

lorsque le délai d'attente vous arrive appeler une fonction () => ... Wich lors de son exécution jusqu'à résoudre la promesse

/* but not with this one */ 
setTimeout(resolve('done'), 3000); 

ici vous résolvez en fait la promesse (vous exécutez le résultat function) et passez le résultat à la fonction setTimeout.

Écrire

() => resolve('Job\'s done!!!') 

est le même que

function() { 
    resolve('Job\'s done!!!'); 
} 
+0

qui fait réellement sens. Je vous remercie – Ivan