[英]Waiting for Promise to resolve before moving forward
我正在研究文本解析器。 該代碼旨在在瀏覽器中工作。 它需要支持一種功能,允許用戶在處理文本時輸入解析器要使用的值。 我發現有一個用於該目的的dialig-promise
程序包,但是運行不正常。 我的目標是fillMacro()
會阻塞直到對話框關閉,但它沒有發生。
dataMacro(obj) {
...
fragments.push(myDate);
},
fillMacro(obj) {
console.log(`fillText ${JSON.stringify(obj)}`);
return new Promise((resolve, reject) => {
promptPromise("Please enter value for "+ obj.name, obj.defaultValue || '')
.then(inp => {
console.log('entered:', inp);
resolve(inp);
}, err => {
console.log("User Escapes. Use default?")
resolve(obj.defaultValue || '');
});
})
.then(value => {
fragments.push(value);
});
console.log('finished processing fillText');
},
textMacro(obj) {
...
fragments.push(myText);
}
請指教。
它不起作用,因為您正在從fillMacro
返回一個fillMacro
,並且代碼將指出等待您的Promise兌現,而它將繼續執行。 您有多種解決方案來解決您的問題:
fillMacro
成為一個承諾: fillMacro = new Promise((resolve, reject) => {
// make your computations here
});
然后使用它:
fillMacro.then((success) => {
// this part will execute when the promise has been resolved
});
您也可以使用生成器並自行處理異步部分,但是我認為這種解決方案不適合您的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.