我想推迟 Promise 的执行,直到提供用户输入。
我想发一篇文章,但要等到发生一些事情,如下所示:
while (true) {
promiseForUserInput = pending;
strInput = rl.question("provide input"); //waits for user input
promiseForUserInput = resolved;
var resultOfUsersChoice = promiseForUserInput.then(function(input) {
return loadFromServer(input)
}).then(function(serverResponse) {
console.log(serverResponse)
});
}
这可能吗?我需要阅读工厂函数吗?
最佳答案
这必须像这样工作:
new Promise(function (resolve) {
document.getElementById('my-input').addEventListener('keyup', function (e) {
if (/* input value is good enough for you */) {
resolve(e.currentTarget.value);
}
});
})
要获取输入(我假设这里有一个浏览器上下文),您必须将事件监听器绑定(bind)到某个输入元素,并在某个确定的事件时从该元素读取输入。您只需在 Promise 中执行所有操作,并在对输入值感到满意后立即解决
Promise。
然后你可以.then
这个 promise :
thePromise.then(function (input) {
alert(input);
});
输入数据将是解析值。
关于javascript - 将 promise 置于待处理状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35228476/