gpt4 book ai didi

JavaScript promise : is there any differences between anonymous and not anonymous callbacks?

转载 作者:行者123 更新时间:2023-11-29 16:37:39 26 4
gpt4 key购买 nike

const example = () => new Promise((resolve) => {
resolve();
console.log('1');
} )

example().then(console.log('3'))
console.log('2');

打印出 1 3 2

function create() {
return new Promise(function(resolve, reject) {
resolve();
console.log('1');
});
};

create().then(function() {
console.log('3');
}, function() {
console.log('4');
});

console.log('2');

打印出 1 2 3

我每次都测试了十多次。但结果是一样的。为什么会出现这种差异?

最佳答案

then 接受函数作为参数,而不是诸如 console.log 之类的函数调用(它不返回函数,但返回未定义)。所以当你这样做时

example().then(console.log('3'))

遇到 .then 时,它立即计算 console.log('3'),解释器希望/期望函数调用返回 function,这样它就可以将返回的函数放入.then链中。因此,console.log('3') 会立即打印出来。但 console.log 返回 undefined - 它不是进入异步 .then 链的函数。

它实际上与命名函数和匿名函数没有任何关系。您的第一个代码段为 .then 提供了一个 function 作为参数,但第二个代码段为 .then 提供了 console.log 作为参数调用(立即计算并返回未定义)。

只需在第一个代码段的 console.log 之前添加 () =>,您就会发现它的行为与第二个代码段相同,通过使 console.log 主线程完成后异步调用运行:

const example = () => new Promise((resolve) => {
resolve();
console.log('1');
} )

example().then(() => console.log('3'))
console.log('2');

关于JavaScript promise : is there any differences between anonymous and not anonymous callbacks?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49662461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com