使用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;
我已检查剩余代码,只有当我使用node index.js
这是设计,还是我的实施错了?如果它是按照设计的,那么如果你可以将我链接到文档会很棒,因为我无法在其上找到任何内容。
谢谢!
答案 0 :(得分:7)
...并且它们在声明时运行,而不会被提示
你没有“宣布”承诺。 new Promise
创建一个promise并调用传递它的执行函数。如果您希望启动执行程序所做的工作(当时),而不是以后,就可以这样做。
如果你想定义一些东西,它会返回一个承诺而不是启动它,只需将它放在一个函数中:
function doProgress() {
return new Promise(function(resolve, reject) {
// ...
});
}
...然后在您希望该过程开始时调用它:
var progressPromise = doProgress();
文档: