簡體   English   中英

如何從Promise獲取已解決的數據

[英]How to get resolved data from a Promise

考慮以下代碼片段:

let primise = new Promise((resolve, reject) => {
    resolve({ x: 10 });
});

setTimeout(() => {
  // At some moment in the future (Promise is resolved)
    console.log(promise);
}, 200);

現在,用{ x: 10 }解決了諾言。 如何使用已解決的Promise訪問此數據?

檢查promise對象,我可以看到數據作為promise._v可用,但這看起來不正確。 任何幫助,將不勝感激

諾言的全部目的是,您不必等待任何時間來確定諾言是否得以解決……您只需將其鈎住即可。

let promise = new Promise((resolve, reject) => {
    resolve({ x: 10 });
});

...

promise.then(data => {
    // use data here...
});

不,您不能檢查承諾(至少不是本機承諾,某些Userland實現確實有可用的同步檢查方法)。

因此-與往常一樣-使用promise.then(v => console.log(v)) 只有這樣,您才能確保兌現諾言。

如果您還想等待200ms,請對超時和Promise.all使用另一個諾言來等待它們兩個:

let promise = Promise.resolve({ x: 10 });

Promise.all([promise, new Promise(resolve => setTimeout(resolve, 200))]).then([v] => {
    // At some moment in the future (and promise is fulfilled)
    console.log(v); // {x: 10}
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM