Promise.resolve()
Promise.resolve方法有以下三种形式
Promise.resolve(value)
Promise.resolve(promise)
Promise.resolve(thenable)
Promise.resolve可以把,同步值value, 一个promise, 一个thenable类型的对象都包裹成一个新的Promise。
- 如果是一个普通值,则返回一个resolved的promise实例,并且这个promise实例的状态是fulfilled, 值是value
- 如果是一个promise,则返回这个promise的副本
- 如果是一个thenable的类promise,则把这个类promise的thenable变成真正的promise
Promise.resolve = function(value){
// 普通值
if(typeof value == "number"){
return new Promise((resolve)=>{resolve(value)})
}
// 如果value是promise那么,直接返回这个promise
if(value instanceof Promise) return value
if(value == null) return null
// 如果value是类promise的对象
if(typeof value === 'object' || typeof value === 'function'){
let then = value.then
if(then === 'function'){
return new Promise(then.call(value))
}
}
}
Promise.reject()
Promise.reject = function(reason){
return new Promise((resolve,reject)=>{
reject(reason)
})
}