Promise.reject()
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
Promise.reject() éææ¹æ³è¿åä¸ä¸ªå·²æç»ï¼rejectedï¼ç Promise å¯¹è±¡ï¼æç»åå 为ç»å®çåæ°ã
å°è¯ä¸ä¸
function resolved(result) {
console.log("Resolved");
}
function rejected(result) {
console.error(result);
}
Promise.reject(new Error("fail")).then(resolved, rejected);
// Expected output: Error: fail
è¯æ³
Promise.reject(reason)
åæ°
reason-
该
Promise对象被æç»çåå ã
è¿åå¼
è¿åä¸ä¸ªå·²æç»ï¼rejectedï¼ç Promiseï¼æç»åå 为ç»å®çåæ°ã
æè¿°
Promise.reject éææ¹æ³è¿åä¸ä¸ªè¢«æç»ç Promise 对象ãéè¿ä½¿ç¨ Error çå®ä¾è·åé误åå reason 对è°è¯åéæ©æ§é误ææå¾æå¸®å©ã
Promise.reject() æ¹æ³æ¯ä¸ä¸ªéç¨æ¹æ³ï¼æ¯æåç±»åï¼è¿æå³çå®å¯ä»¥å¨ Promise çåç±»ä¸è°ç¨ï¼å¹¶ä¸ç»æä¼æ¯è¯¥å类类åç Promise 对象ã为æ¤ï¼åç±»çæé 彿°å¿
é¡»å®ç°ä¸ Promise() æé 彿°ç¸åçç¾åï¼å³æ¥åä¸ä¸ª executor 彿°ï¼è¯¥å½æ°å¯ä»¥ç¨ resolve å reject åè°å½æ°ä½ä¸ºåæ°è¿è¡è°ç¨ãPromise.reject() å®é
ä¸ç¸å½äº new Promise((resolve, reject) => reject(reason)) çç®åå½¢å¼ã
ä¸ Promise.resolve() ä¸åï¼å³ä½¿ reason å·²ç»æ¯ä¸ä¸ª Promise 对象ï¼Promise.reject() æ¹æ³ä¹å§ç»ä¼å°å
¶å°è£
å¨ä¸ä¸ªæ°ç Promise 对象ä¸ã
示ä¾
>ä½¿ç¨ Promise.reject() éææ¹æ³
Promise.reject(new Error("失败")).then(
() => {
// ä¸ä¼è¢«è°ç¨
},
(error) => {
console.error(error); // Stacktrace
},
);
reject ä¸ä¸ª promise 对象
ä¸ Promise.resolve ä¸åï¼Promise.reject æ¹æ³ä¸ä¼éç¨å·²åå¨ç Promise å®ä¾ãå®å§ç»è¿åä¸ä¸ªæ°ç Promise å®ä¾ï¼è¯¥å®ä¾å°è£
äºæç»çåå ï¼reasonï¼ã
const p = Promise.resolve(1);
const rejected = Promise.reject(p);
console.log(rejected === p); // false
rejected.catch((v) => {
console.log(v === p); // true
});
å¨é Promise æé 彿°ä¸è°ç¨ reject()
Promise.reject() æ¹æ³æ¯ä¸ä¸ªéç¨æ¹æ³ãå®å¯ä»¥å¨ä»»ä½å®ç°ä¸ Promise() æé 彿°ç¸åç¾åçæé 彿°ä¸è°ç¨ãä¾å¦ï¼æä»¬å¯ä»¥å¨ä¸ä¸ªæé 彿°ä¸è°ç¨å®ï¼å¹¶ä¼ å
¥ console.log ä½ä¸º reject åæ°ï¼
class NotPromise {
constructor(executor) {
// âresolveâåârejectâ彿°çè¡ä¸ºä¸åç Promise å®å
¨ä¸åï¼ä½ `Promise.reject()` æ¹æ³ä»¥ç¸åçæ¹å¼è°ç¨å®ä»¬ã
executor(
(value) => console.log("已解å³", value),
(reason) => console.log("å·²æç»", reason),
);
}
}
Promise.reject.call(NotPromise, "foo"); // è¾åº "å·²æç» foo"
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-promise.reject> |