这是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, reject
。resolve
和reject
在这里也是函数对象。
那么解析到底在哪里定义
在Promise
代码内。