了解 JavaScript 中的 promise 构造函数



这是MDN Promise页面的代码片段。

let myFirstPromise = new Promise((resolve, reject) => {
// We call resolve(...) when what we were doing asynchronously was successful, and reject(...) when it failed.
// In this example, we use setTimeout(...) to simulate async code. 
// In reality, you will probably be using something like XHR or an HTML5 API.
setTimeout( function() {
resolve("Success!")  // Yay! Everything went well!
}, 250) 
}) 

在上面的代码中,我不明白resolve(和reject(的函数定义在哪里?在这里,我们只是将resolve作为参数传递给Promise构造函数,然后在执行resolve("Success!")时调用它,那么resolve在哪里定义呢?

多个部分,首先这是一个箭头函数,所以:

(resolve, reject) => {}

是(以及this等周围的其他一些东西(的简写:

function(resolve, reject){}

因此,您将一个函数作为参数传递到另一个函数中。函数是 JavaScript 中的对象。因此,如果您想象Promise的实现,它可能看起来像这样(而不是实际的实现(:

Promise(callBackFunction){
...//do some things
callBackFunction(resolve, reject); 
}

因此,callBackFunction是您使用箭头函数传入的函数,当 promise 到达代码中的相关点时,它将调用您的函数并将其传递给resolve, rejectresolvereject在这里也是函数对象。

那么解析到底在哪里定义

Promise代码内。

最新更新