正如documentation所说
解决
Promise.resolve(value)方法返回一个Promise对象 用给定的值解决。
拒绝
Promise.reject(reason)方法返回一个Promise对象 因具体原因而被拒绝。
我了解解决的用法,但拒绝和何时使用的用途是什么?
答案 0 :(得分:1)
Promise.reject是承诺抛出错误的方式。通常你的承诺中会有一个条件:
const user = {
name: 'John',
age: 17
}
const p = new Promise((resolve, reject) => {
if (user.age > 18) {
resolve('Welcome!');
} else {
reject(new Error('Too young!'));
}
});
然后,您可以链接then
和catch
方法来分别处理解决和拒绝的结果。
p.then(message => {
console.log(message); // 'Welcome!', if promise resolves, won't work with age of 17
})
.catch(err => {
console.error(err); // 'Too young!', because promise was rejected
});
答案 1 :(得分:1)
以下是此声明可用于的几个示例:
定义为返回Promise的函数,但是您执行了一些同步检查并希望返回错误:
function request(data) {
if (!data) return Promise.reject("Empty data!");
// other logic
}
单元测试,例如,如果服务返回错误(被拒绝的承诺),您希望测试使用默认数据:
const mockService = mock(Service);
// mock request method to return rejected promise
when(mockService.performRequest()).thenReturn(Promise.reject("Failed!"));
// inject mock instance and check that default data used if service failed
const sut = new ClassUnderTest(mockService);
expect(sut.getData()).to.eq("Default data");