a exprimé sa confusion quant à la différence entre setTimeout(resolve('World'), ms);
与 setTimeout(resolve, ms, 'World');
et
function timeout(ms = 100) {
/*1. 为何这种写法,立即返回数据而不是等到过了 ms 后才返回*/
// return new Promise((resolve, reject) => {
// setTimeout(resolve('World'), ms);
// });
/*2. 为何这种写法,等到过了 ms 后才返回*/
return new Promise((resolve, reject) => {
setTimeout(resolve, ms, 'World');
});
}
timeout(1000)
.then(value => {
console.log(`Hello, ${value}`);
})
.catch(err => {
console.error(err);
});
C'est la différence entre func() et func. Le premier paramètre de setTimeout est func() est utilisé, cela équivaut à ce que sa valeur de retour soit le premier paramètre.
Par exemple :
à peu près équivalent à :
Le premier paramètre passé est exécuté immédiatement, pas le nom de la fonction
et
Promise
无关,当你执行到setTimeout(resolve('World'), ms);
时,浏览器就已经自动执行了resolve('World')
, par exemple :Exécuter immédiatement à ce moment
test
.Le premier paramètre de setTimeout doit être une fonction
Une fonction
Une fonction
(Pourquoi tant de gens ne comprennent pas)
setTimeout(resolve, ms, 'World');
其中resolve
是一个函数,因此这段的行为正常setTimeout(resolve('World'), ms);
其中resolve('World')
不是函数,是什么决定于resolve
的返回值类型,但无论如何,resolve
Lorsque enregistrez le timer, celui-ci a déjà été exécuté, donc naturellement il n'y aura pas d'effet de retard====================================
Les réponses suivantes ne sont pas valides : je n'ai pas examiné le questionnez soigneusement. .
Il n’y a généralement aucune différence.
Juste ! ! ! !
Il y a un problème avec la prise en charge de
setTimeout(resolve, ms, 'World')
dans le navigateur IE. (Il semble que IEMatériaux de référence : (voir la note avec fond jaune à l'intérieur)
WindowOrWorkerGlobalScope.setTimeout()