javascript - 将 promise 置于待处理状态

标签 javascript promise

我想推迟 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/

相关文章:

javascript - Angular 2 测试具有虚假依赖项的组件

Javascript: promise 等待条件或在尝试次数后中止

javascript - 从 Promise.all 解构为对象

javascript 获取值(value)而不是 promise

angular - 尝试在 Angular 中缓存 HttpClient 请求,但看到未解析的变量

javascript - 为 JavaScript Promise 编写测试

javascript - 错误无法读取未定义的属性 'add'

javascript - 页面之间不共享本地存储

javascript - 在reactjs中获取日期的方法

javascript - jQuery .data() 替换嵌套对象的属性