我发现一些具有相同行为的代码段,但是从函数中解析promise的语法不同:
return new Promise(resolve => resolve(fruits[name]))
和
return Promise.resolve(fruits[name])
两者之间有什么区别?
答案 0 :(得分:0)
它们都具有相同的功能,但其中一个是Promise类上的静态方法。该:
new Promise(resolve => resolve(perams))
创建一个仅传递resolve参数的新promise(而不是传递resolve和拒绝),然后立即解析该Promise。 Promise.resolve()
是Promise类上的静态方法,其工作方式基本上相同。
做出承诺后,将solve函数传递到promise中,因此Promise.resolve()将立即调用该函数,而不必将其作为参数传递。
您可以将Promise类想象成这样
class Promise {
constructor(func) {
func(Promise.resolve(), Promise.reject())
}
static resolve(value) {
//resolve code
}
static reject(vale) {
//reject code
}
//other methods
}
它很可能并非完全像这样,但是已经足够接近了。