[英]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.