如何在新的诺言中安排参数?

时间:2018-08-28 13:38:27

标签: javascript promise

我刚刚了解了promise和async / await。 我希望我的函数在继续执行之前等待内部的某些函数完成。 基本上,我猜它应该看起来像这样:

async function doSomething(data){
//some code
await createMarkup(data)
//do some stuff which must wait for createMarkup to finish
}

function createMarkup(input){
return new Promise ((???) => {
//some code
resolve(markup)
})
}

现在,在我阅读的有关承诺和内容的大多数教程中,“新承诺”的参数始终为“(解决,拒绝)”。这种情况经常发生,以至于我想知道这是否有必要吗?

在我的情况下,诺言应仅包含一个论点。因此,是否可以像在其他任何参数中一样,将我的一个参数放入参数中就可以了?还是我必须照顾一点?^^

1 个答案:

答案 0 :(得分:3)

  

在我的情况下,诺言应仅包含一个论点。

Promise将接受一个论点。该参数将是您希望其运行的函数。这就是Promise的定义方式。这不是您所能控制的。

传递给promise的函数将收到两个参数。它在被调用时传递给它们,这由Promise库完成(这不是您编写的代码,并且遵循Promises的规范,因此不受您的控制)。传统上称它们为resolvereject,但是您可以随便叫它们。如果传递的函数成功,则需要调用resolve(any_data),如果失败,则需要调用reject(any_data)。如果您不打算调用reject,则无需在参数列表中提及它,尽管如此,第二个参数仍将传递给函数。

您可以创建一个返回诺言的函数(例如您的示例中的createMarkup),该函数接受您喜欢的任何参数,并使它们可用于通过闭包传递给Promise的函数。