一个带有then()函数参数的promise

时间:2018-11-13 08:10:16

标签: javascript es6-promise

     let promise = new Promise(resolve => {
   setTimeout(() => resolve("done!"), 1000);
    });
  promise.then(alert); // shows "done!" after 1 second

//在上面的代码片段中,alert如何采用“ done”值,因为我们没有在alert中传递任何参数

4 个答案:

答案 0 :(得分:2)

出于承诺,可以返回两件事Accept(成功)Reject(失败)。通常,我们会执行类似的操作来实现Promise响应,如您在此处看到的那样,我们将使用2个临时变量进行警报,如果成功,则结果变量将为警报,如果失败,则错误变量将为警报。

let promise = new Promise(function(resolve, reject) {
  setTimeout(() => reject(new Error("Whoops!")), 1000);
});

// reject runs the second function in .then
promise.then(
  result => alert(result), // doesn't run
  error => alert(error) // shows "Error: Whoops!" after 1 second
);

如果您只对成功完成有兴趣,则可以使用它。

let promise = new Promise(resolve => {
  setTimeout(() => resolve("done!"), 1000);
});

promise.then(alert); // shows "done!" after 1 second

它的作用是什么?它实际上会以“完成”的形式得到结果,并且由于您已经应用了警报,因此“ {完成”将像这样alert("done")那样传递给警报。

要直接捕获,可以使用以下方法:

let promise = new Promise((resolve,reject) => {
  setTimeout(() => reject("failed!"), 1000);
});

promise.catch(alert); // shows "failed!" after 1 second

答案 1 :(得分:0)

promise.thenfunction with argument "done"作为参数,而alertfunction,它将“完成”自动传递给alert

答案 2 :(得分:0)

无论您在resolve函数中传递的内容如何,​​都将传递给'then'内部的回调。

并且警报功能带有要在警报框中显示的参数。 因此,简而言之your promise -> resolve-function -> then -> alert('done')

答案 3 :(得分:0)

警报类型是函数,因此每当我们将警报作为第一个参数发送时,便将其分配为解决Promise的回调。

意味着resolve(“ done!”)等于alert(“ done!”)

下面的代码将不会发出警告!

let promise = new Promise(resolve => {
setTimeout(() => resolve("done!"), 1000);

});
promise.then(alert('not'));