Rumah > Soal Jawab > teks badan
menyatakan kekeliruan tentang perbezaan antara setTimeout(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);
});
習慣沉默2017-06-12 09:23:50
Ini ialah perbezaan antara func() dan func Parameter pertama setTimeout ialah func Jika func() digunakan, ia bersamaan dengan nilai pulangannya sebagai parameter pertama.
Contohnya:
function test(){
console.log('this is test!');
return function () {
console.log('this is return!');
}
}
setTimeout(test(), 1000);
kira-kira bersamaan dengan:
console.log('this is test!');
setTimeout(function () {
console.log('this is return!');
}, 1000);
三叔2017-06-12 09:23:50
Parameter pertama yang diluluskan dilaksanakan serta-merta, bukan nama fungsi
淡淡烟草味2017-06-12 09:23:50
dan Promise
无关,当你执行到setTimeout(resolve('World'), ms);
时,浏览器就已经自动执行了resolve('World')
, contohnya:
var test = function(value){
console.log(value);
}
setTimeout(test('hello') , 2000);
Laksanakan segera pada masa initest
.
曾经蜡笔没有小新2017-06-12 09:23:50
(Kenapa ramai yang tak faham)
setTimeout(resolve, ms, 'World');
其中 resolve
是一个函数,因此这段的行为正常setTimeout(resolve('World'), ms);
其中 resolve('World')
不是函数,是什么决定于 resolve
的返回值类型,但无论如何,resolve
Apabila daftar pemasa, ia telah pun dilaksanakan, jadi secara semula jadi tiada kesan kelewatan
巴扎黑2017-06-12 09:23:50
=====================================
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 IE <= 9 akan menimbulkan masalah)
Bahan rujukan: (lihat nota berlatar belakang kuning di dalam)
WindowOrWorkerGlobalScope.setTimeout()