Node.js承诺在不被调用的情况下运行

时间:2017-11-09 13:29:50

标签: javascript node.js promise es6-promise

使用promises时,它们会自动运行而不会被调用。我按照MDN Docs设置它们,并在声明它们时运行,而不会被提示。



var progressPromise = new Promise(function(resolve, reject) {
  // Query the DB to receive the ToDo tasks
  // inProgress is the tableID

  getTasks(inProgress, function(tasks) {
    // Check that the list is returned.
    console.log("Shouldn't Run Automatically");
    if (tasks) {
      console.log("This Too Runs Automatically");
      resolve(tasks);
    } else {
      reject("There was a failure, the data was not received");
    }
  });

});

<p>Console Output</p>
<p> Shouldn't Run Automatically </p>
<p> This too runs automatically </p>
&#13;
&#13;
&#13;

我已检查剩余代码,只有当我使用node index.js

启动应用时触发了承诺

这是设计,还是我的实施错了?如果它是按照设计的,那么如果你可以将我链接到文档会很棒,因为我无法在其上找到任何内容。

谢谢!

1 个答案:

答案 0 :(得分:7)

  

...并且它们在声明时运行,而不会被提示

你没有“宣布”承诺。 new Promise创建一个promise并调用传递它的执行函数。如果您希望启动执行程序所做的工作(当时),而不是以后,就可以这样做。

如果你想定义一些东西,它会返回一个承诺而不是启动它,只需将它放在一个函数中:

function doProgress() {
    return new Promise(function(resolve, reject) {
        // ...
    });
}

...然后在您希望该过程开始时调用它:

var progressPromise = doProgress();

文档: