gpt4 book ai didi

javascript - 如何在以下 promise 代码中传递函数参数

转载 作者:行者123 更新时间:2023-12-04 01:03:51 25 4
gpt4 key购买 nike

我有以下代码片段。这是一个 promise ,在 2 秒后被拒绝。两秒后输出 Error my custom error

const promise = new Promise((resolve, reject) => {
setTimeout(() => reject('my custom error'), 2000);
});

function onSuccess() {
console.log('Success');
}

function onError(err) {
console.log('Error', err);
}

promise.then(onSuccess);
promise.catch(onError);
// promise.catch((err) => onError(err));

您可以看到我添加了两个 promise.catch 语句。他们都给出相同的输出。我的问题是如何在以下 catch 语句 promise.catch(onError) 中传递 reject 中的错误参数 (我的自定义错误)

最佳答案

catch 方法接受一个回调函数。当 promise 被拒绝时,调用回调时出现错误。

在您的情况下,onError 函数是回调。因此,当 promise 被拒绝时,它会接受该回调并调用它。

一个典型的例子可以是这样的

catch(callback) {
// some logic
callback(new Error('error message'));
}

因此您的 onError 函数接收参数作为 err 对象。

请务必在 how a promise can typically be implemented 上查看这篇媒体文章

它会让您更多地了解引擎盖下发生的事情。

还要注意

两种情况

function onError(err) {
console.log('Error', err);
}

promise.catch(onError);
promise.catch((err) => onError(err));

您正在传递一个函数以作为回调进行捕获。在第一种情况下,一个普通的函数将被调用,无论 catch 调用它的回调函数的参数是什么。因此,例如 catch 方法将 3 个参数传递给回调,所有三个参数都将可用于 onError

在第二种情况下,您传递的是内联箭头函数。现在它充当回调,它使用所有参数 catch block 传递调用,但您只使用第一个参数并将其转发给 onError 函数

关于javascript - 如何在以下 promise 代码中传递函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67181634/

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