let promise = new Promise(resolve => {
setTimeout(() => resolve("done!"), 1000);
});
promise.then(alert); // shows "done!" after 1 second
//在上面的代码片段中,alert如何采用“ done”值,因为我们没有在alert中传递任何参数
答案 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.then
以function with argument "done"
作为参数,而alert
是function
,它将“完成”自动传递给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'));