gpt4 book ai didi

javascript - 为什么 Promise 中的方法没有括号?

转载 作者:太空宇宙 更新时间:2023-11-04 03:01:51 24 4
gpt4 key购买 nike

为什么 Promise 的 then block 中的 console.log 没有括号?它如何知道应该记录什么?

const Category = require('./models/category');
const cat = Category.find({}).then(console.log);

最佳答案

它传递一个函数引用作为回调。 console.log指的是 Promise 解析时调用的函数,而不是实际调用 console.log .

函数是 JavaScript 中的一流对象。它们可以被传递。就像你会做的那样then(x => console.log(x)) 。如果您事先调用它,则必须先对其进行评估(并传递其返回值):

promise.then(console.log()) // Called immediately, undefined passed to then

请注意,它与 then(x => console.log(x))完全相同。任何上下文都会丢失,因为被调用者无法仅从函数引用中恢复上下文。虽然这在这里没有效果,据我所知。

关于javascript - 为什么 Promise 中的方法没有括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53823885/

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