javascript 中的参数匹配 [duplicate]

Parameter matching in javascript [duplicate]

提问人:kd8 提问时间:3/29/2023 更新时间:3/29/2023 访问量:43

问:

在关于 Promise (https://www.youtube.com/watch?v=DHvZLI7Db8E&ab_channel=WebDevSimplified) 的教程中,有以下内容:

let p = new Promise((resolve, reject) => {
    let a = 1 + 1;
    if (a == 2) {
        resolve('Success');
    } else {
        reject('Failed');
    }
})

p.then((message) => {
    console.log("this is a success" + message);
}).catch((message) => {
    console.log("this is an error" + message);
})

在 Promise 的文档中,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise, 向下滚动到构造函数部分,我们有:

Promise()
Creates a new Promise object. 
The constructor is primarily used to wrap functions that do not already support promises.

我从视频中了解到的是,如果 resolve 返回 true,则 .then() 将执行,而 .catch() 将在 reject 返回 true 时执行。

我不明白的是 Promise() 将函数作为构造函数,但参数可以是任意的(文档没有说我们需要使用 and ),那么 JavaScript 如何知道参数的语义呢?resolvereject

此外,被调用的事实表明它们实际上是回调函数,但我没有在任何地方看到它们?resolve()reject()

(在阅读其他教程后,同样的疑问仍然存在:https://www.freecodecamp.org/news/javascript-es6-promises-for-beginners-resolve-reject-and-chaining-explained)

JavaScript Promise 回调

评论

1赞 Barmar 3/29/2023
参数的名称可以是任何内容,并且是描述它们所起作用的常规名称。resolvereject
2赞 Barmar 3/29/2023
不管你怎么称呼它们,第一个是用来解决承诺的,第二个是用来拒绝承诺的。
2赞 Barmar 3/29/2023
“如果 resolve 返回 true,则执行”——这不太对。 调用时将执行,调用时将执行。.then()resolve().catch()reject()
1赞 Redu 3/29/2023
Promise 构造函数中的回调由您定义。它只告诉无论你想出什么回调,promise 构造函数都会使用两个函数参数调用该回调。由您来命名函数参数。约定是 和,但我主要将它们命名为 和 。因此,如果你用你选择的任何名称调用第一个,它会解析 promise,而第二个 promise 会拒绝。resolverejectvx
0赞 kd8 3/29/2023
从我收集到的信息来看,JavaScript 使用了一个位置约束来区分参数,这些参数本身实际上是回调函数。此外,和是内置的 JavaScript 函数,因此为什么代码中没有要研究的定义。resolve()reject()

答: 暂无答案