Baseline Widely available
Promise.resolve()
ã¯éçã¡ã½ããã§ã Promise
ãä¸ããããå¤ã§ã解決ãããã¾ããå¤ããããã¹ã®å ´åã¯ããã®ãããã¹ãè¿ããã¾ãããã®å¤ã Thenable ã§ããã°ãPromise.resolve()
㯠then()
ã¡ã½ããããæºåãã 2 ã¤ã®ã³ã¼ã«ããã¯ã¨å
±ã«å¼ã³åºãã¾ãããã以å¤ã®å ´åã¯ããã®å¤ã§å±¥è¡ãããããã¹ãè¿ããã¾ãã
ãã®é¢æ°ã¯è¤æ°é層ã®ãããã¹é¢¨ãªãã¸ã§ã¯ã (ä¾ãã°ãä½ãã§è§£æ±ºãããããã¹ã§è§£æ±ºãããããã¹) ãåä¸ã®é層ã«å¹³å¦åãã¾ãã
試ãã¦ã¿ã¾ãããconst promise1 = Promise.resolve(123);
promise1.then((value) => {
console.log(value);
// Expected output: 123
});
æ§æ 弿°
value
ãã® Promise
ã§è§£æ±ºããéã®å¼æ°ã解決ããããã® Promise
ã¾ã㯠Thenable ã«ãããã¨ãã§ãã¾ãã
ä¸ããããå¤ã§è§£æ±ºããã Promise
ãã¾ã㯠value ããããã¹ãªãã¸ã§ã¯ãã§ãã£ãå ´åãå¤ã¨ãã¦æ¸¡ããããããã¹ã§ãã解決ããããããã¹ã¯ãå±¥è¡ãæå¦ãå¾
æ©ã®ããããã®ç¶æ
ã«ãªããã¨ãã§ãã¾ããä¾ãã°ãæå¦ããããããã¹ã解決ãã¦ããçµæã¯æå¦ããããããã¹ã®ã¾ã¾ã§ãã
Promise.resolve()
ã¯ãããã¹ã 解決 ãã¾ããããã¯ãããã¹ãå±¥è¡ãããæå¦ããããããã¨ã¨ã¯ç°ãªãã¾ããç¨èªã®å®ç¾©ã«ã¤ãã¦ã¯ããããã¹ã®èª¬æãåç
§ãã¦ãã ãããç°¡åã«è¨ãã¨ã Promise.resolve()
ã¯ãæçµçãªç¶æ
ãä»ã®ãããã¹ã Thenable ãªãã¸ã§ã¯ããã¾ãã¯ä»ã®å¤ã«ä¾åãã¦ãããããã¹ãè¿ãã¾ãã
ã¡ã¢: value
å¼ã®è©ä¾¡ã§åæçã«ã¨ã©ã¼ãçºçããå¯è½æ§ãããå ´åããã®ã¨ã©ã¼ã¯ææããããPromise.resolve()
ã«ãã£ã¦æå¦ããããããã¹ã«ã©ããããã¾ãããã®ç¨éã«ã¯ Promise.try(() => value)
ã使ç¨ãããã¨ãæ¤è¨ãã¦ãã ããã
Promise.resolve()
ã¯æ±ç¨ã§ããµãã¯ã©ã¹åã«å¯¾å¿ãã¦ãã¾ããã¤ã¾ããPromise
ã®ãµãã¯ã©ã¹ã§å¼ã³åºããã¨ãã§ãããã®çµæã¯ãµãã¯ã©ã¹åã®ãããã¹ã«ãªãã¾ãããããè¡ãã«ã¯ããµãã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ Promise()
ã³ã³ã¹ãã©ã¯ã¿ã¼ã¨åãå®ç¾©ã§å®è£
ããå¿
è¦ãããã¾ãã弿°ã¨ã㦠resolve
㨠reject
ã³ã¼ã«ããã¯ã§å¼ã³åºããã¨ãã§ããåä¸ã® executor
颿°ãåãå
¥ãããã¨ãã§ãã¾ãã
Promise.resolve()
ã¯ããã¤ãã£ãã® Promise
ã®ã¤ã³ã¹ã¿ã³ã¹ãç¹å¥æ±ããã¦ãã¾ãã value
ã Promise
ã¾ãã¯ãã®ãµãã¯ã©ã¹ã«å±ãã value.constructor === Promise
ã®å ´åãæ°ãã Promise
ã¤ã³ã¹ã¿ã³ã¹ã使ããã«ãPromise.resolve()
ã§ç´æ¥ value
ãè¿ããã¨ãã§ãã¾ããããã§ãªãå ´åãPromise.resolve()
ã¯åºæ¬çã« new Promise((resolve) => resolve(value))
ã®ä¸æ¬æå®ã¨ãªãã¾ãã
解決ãã¸ãã¯ã®å¤§é¨åã¯ï¼å®éã«ã¯ Promise()
ã³ã³ã¹ãã©ã¯ã¿ã¼ã«æ¸¡ããã resolve
颿°ã§å®è£
ããã¾ããæ¦è¦ãã¾ã¨ããã¨ã次ã®ããã«ãªãã¾ãã
then
ã¡ã½ãããå¼ã³åºããã弿°ã¨ãã¦è§£æ±ºé¢æ°ã®ãã¢ã渡ããã¨ã§ãè¿ããããããã¹ã¯ãã® Thenable ã®ç¶æ
ãæ¡ç¨ãããã¨ã«ãªãã¾ããï¼ãããããã¤ãã£ãã®ãããã¹ã¯ã©ããã¼ã使ããã«ç´æ¥ Promise.resolve()
ãéãã®ã§ããã¤ãã£ãã®ãããã¹ã§ã¯ then
ã¡ã½ããã¯å¼ã°ãã¾ããï¼ãresolve
颿°ãå¥ã® Thenable ãªãã¸ã§ã¯ããåãåãã¨ãããã¯åã³è§£æ±ºãããã®ã§ãæçµçãªãããã¹ã®å±¥è¡å¤ã¯æ±ºã㦠Thenable ã«ãªããã¨ã¯ãªãã§ããããPromise.resolve("Success").then(
(value) => {
console.log(value); // "Success"
},
(reason) => {
// å¼ã³åºãããªã
},
);
é
åã§è§£æ±º
const p = Promise.resolve([1, 2, 3]);
p.then((v) => {
console.log(v[0]); // 1
});
å¥ã® Promise ã§è§£æ±º
Promise.resolve()
ã¯ãæ¢åã® Promise
ã¤ã³ã¹ã¿ã³ã¹ãåå©ç¨ãã¾ãããã¤ãã£ãã®ãããã¹ã解決ããå ´åã¯ãã©ããã¼ã使ããã«åããããã¹ã¤ã³ã¹ã¿ã³ã¹ãè¿ãã¾ãã
const original = Promise.resolve(33);
const cast = Promise.resolve(original);
cast.then((value) => {
console.log(`value: ${value}`);
});
console.log(`original === cast ? ${original === cast}`);
// ãã°ï¼é çªéãï¼:
// original === cast ? true
// value: 33
ãã°ã®é çªãå転ããã®ã¯ã then
ãã³ãã©ã¼ãéåæã«å¼ã³åºãããããã«çºçãã¾ãã詳ãã㯠then()
ã®ãªãã¡ã¬ã³ã¹ãåç
§ãã¦ãã ããã
// Thenable ãªãã¸ã§ã¯ãã解決
const p1 = Promise.resolve({
then(onFulfill, onReject) {
onFulfill("fulfilled!");
},
});
console.log(p1 instanceof Promise); // trueããªãã¸ã§ã¯ãã Promise ã«ãã£ã¹ãããã
p1.then(
(v) => {
console.log(v); // "fulfilled!"
},
(e) => {
// å¼ã³åºãããªã
},
);
// Thenable throws
// Promise rejects
const p2 = Promise.resolve({
then() {
throw new TypeError("Throwing");
},
});
p2.then(
(v) => {
// å¼ã³åºãããªã
},
(e) => {
console.error(e); // TypeError: Throwing
},
);
// Thenable ã¯ã³ã¼ã«ããã¯ã®å¾ã§ Promise ã解決ããå ´åã«
// ä¾å¤ãçºçããã¾ãã
const thenable = {
then(onFulfilled) {
onFulfilled("Resolving");
throw new TypeError("Throwing");
},
});
p3.then(
(v) => {
console.log(v); // "Resolving"
},
(e) => {
// not called
},
);
å ¥ãåã«ãªã£ã Thenable ã¯ãåä¸ã®ãããã¹ã«ãæ·±ãå¹³å¦åãããã¾ãã
const thenable = {
then(onFulfilled, onRejected) {
onFulfilled({
// The thenable is fulfilled with another thenable
then(onFulfilled, onRejected) {
onFulfilled(42);
},
});
},
};
Promise.resolve(thenable).then((v) => {
console.log(v); // 42
});
è¦å: èªåèªèº«ã«è§£æ±ºãã thenable ã«å¯¾ã㦠Promise.resolve()
ãå¼ã³åºããªãã§ãã ãããããã¯ç¡éã«ãã¹ããããããã¹ãå¹³å¦åãããã¨ãããããç¡éã®å帰ãå¼ãèµ·ããã¾ãã
const thenable = {
then(onFulfilled, onRejected) {
onFulfilled(thenable);
},
};
Promise.resolve(thenable); // ç¡éã®å帰ãå¼ãèµ·ãã
Promise 以å¤ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã«å¯¾ãã resolve() ã®å¼ã³åºã
Promise.resolve()
ã¯æ±ç¨çãªã¡ã½ããã§ãããã㯠Promise()
ã³ã³ã¹ãã©ã¯ã¿ã¼ã¨åãå®ç¾©ãå®è£
ããä»»æã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã§å¼ã³åºããã¨ãã§ãã¾ããä¾ãã°ãresolve
ã¨ã㦠console.log
ãæ¸¡ãã³ã³ã¹ãã©ã¯ã¿ã¼ã§å¼ã³åºããã¨ãã§ãã¾ãã
class NotPromise {
constructor(executor) {
// "resolve" 㨠"reject" 颿°ã¯ãã¤ãã£ãã®ãããã¹ã¨åããããªæ¯ãèãã¯ãã¾ãããã
// Promise.resolve() ã¯åãããã«ããããå¼ã³åºãã¾ãã
executor(
(value) => console.log("Resolved", value),
(reason) => console.log("Rejected", reason),
);
}
}
Promise.resolve.call(NotPromise, "foo"); // Logs "Resolved foo"
å
¥ãåã«ãªã£ã Thenable ãå¹³å¦åããæ©è½ã¯ Promise()
ã³ã³ã¹ãã©ã¯ã¿ã¼ã® resolve
颿°ã§å®è£
ããã¦ãã¾ãããã®ãããä»ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã§å¼ã³åºãã¨ããã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã resolve
颿°ãã©ã®ããã«å®è£
ãã¦ãããã«ãã£ã¦å
¥ãåã® Thenable ãå¹³å¦åãããªãå ´åãããã¾ãã
const thenable = {
then(onFulfilled, onRejected) {
onFulfilled({
// Thenable ã¯ä»ã® Thenable ã«å±¥è¡ããã¾ã
then(onFulfilled, onRejected) {
onFulfilled(42);
},
});
},
};
Promise.resolve.call(NotPromise, thenable); // "Resolved { then: [Function: then] }" ã¨åºå
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4