function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(resolve, ms, 'done');
});
}
timeout(100).then((value) => {
console.log(value);
});
问题---第三行
1.setTimeout不是只有两个参数吗?为什么会有三个?
2.根据我的理解,应该这么写,resolve才能把'done'传给then里面的参数,
为什么上面的写法能?
setTimeout(resolve('done'),ms)
//结果是一样的
首先说一下timeout,直接看例子
这里的参数a只能通过第三个参数传递,你在上面写道
setTimeout(resolve('done'),ms)
这是错误的,因为传递给setTimeout的第一个参数是resolve('done')
的返回值,而resolve函数会立即执行,不会等到倒计时结束,也达不到Promise想要的效果。你可以改成