我正在阅读一些使用 Promise 对象的代码。
有一个setTimeout
函数有三个参数,我想知道第三个参数是做什么的?因为通常它只有两个参数。
代码如下:
function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(resolve, ms , 'done');
});
}
timeout(1000).then(value => {
console.log(value);
});
我注意到第三个参数被传递给resolve
函数,但是为什么我可以在函数中使用它then
?它是如何工作的?
下面两个例子都可以解释一下
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
Promise.all([promise1, promise2, promise3]).then((values) => {
console.log(values); // expected output: Array [3, 42, "foo"]
});
上面的例子可以写成: -
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('foo');
}, 100)
});
Promise.all([promise1, promise2, promise3]).then((values) => {
console.log(values); // expected output: Array [3, 42, "foo"]
});
简而言之,第三个参数是用户需要传递给引用函数的参数[第一个参数] 给予 setTimeout,这是承诺。我们可以将此功能称为“参数结转”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)