我正在研究文本解析器。该代码旨在在浏览器中工作。它需要支持允许用户在处理文本时输入解析器使用的值[s]的能力。我找到了一个用于此目的的包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);
}
请告知。
答案 0 :(得分:0)
它没有用,因为你要从fillMacro
返回一个承诺,代码会注意等待你的承诺得到履行,而且它将继续执行。您有多种解决方案可以解决您的问题:
让fillMacro
成为承诺:
fillMacro = new Promise((resolve, reject) => {
// make your computations here
});
然后使用它:
fillMacro.then((success) => {
// this part will execute when the promise has been resolved
})
您也可以使用generators并自行处理异步部分,但我认为此解决方案不适合您的方案。