menyatakan kekeliruan tentang perbezaan antarasetTimeout(resolve('World'), ms);
与setTimeout(resolve, ms, 'World');
dan
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); });
Ini ialah perbezaan antara func() dan func Parameter pertama setTimeout ialah func Jika func() digunakan, ia bersamaan dengan nilai pulangannya sebagai parameter pertama.
Contohnya:
kira-kira bersamaan dengan:
Parameter pertama yang diluluskan dilaksanakan serta-merta, bukan nama fungsi
dan
Promise
无关,当你执行到setTimeout(resolve('World'), ms);
时,浏览器就已经自动执行了resolve('World')
, contohnya:Laksanakan segera pada masa ini
test
.Parameter pertama setTimeout mestilah fungsi
Satu fungsi
Satu fungsi
(Kenapa ramai yang tak faham)
setTimeout(resolve, ms, 'World');
其中resolve
是一个函数,因此这段的行为正常setTimeout(resolve('World'), ms);
其中resolve('World')
不是函数,是什么决定于resolve
的返回值类型,但无论如何,resolve
Apabiladaftar pemasa, ia telah pun dilaksanakan, jadi secara semula jadi tiada kesan kelewatan=====================================
Jawapan berikut adalah tidak sah: Saya tidak menyemak soal dengan teliti. .
Secara amnya tiada perbezaan.
Hanya! ! ! !
Ada masalah dengan sokongan
setTimeout(resolve, ms, 'World')
dalam pelayar IE. (Nampaknya IEBahan rujukan: (lihat nota berlatar belakang kuning di dalam)
WindowOrWorkerGlobalScope.setTimeout()