将承诺置于待处理状态

Put a promise in a pending state

本文关键字:处理 状态 于待 承诺      更新时间:2023-09-26

我想推迟 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);
        }
    });
})

要获取输入(我在这里假设浏览器上下文),您必须将事件侦听器绑定到某个输入元素,并在某个确定的事件时从元素读取输入。您只需在承诺中完成所有这些操作,并在您对输入值感到满意后立即resolve承诺。

然后,您可以.then此承诺:

thePromise.then(function (input) {
    alert(input);
});

输入数据将是解析的值。