Javascript 为什么要承诺。一切都不一定要承诺?
具有这些嵌套函数:Javascript 为什么要承诺。一切都不一定要承诺?,javascript,Javascript,具有这些嵌套函数: Promise.all( mapDomains( x => x.close() ) ) 我考虑过要创作它们: compose(Promise.all, mapDomains)( x => x.close() ) 然而,上述代码在没有约束Promise.all的情况下失败。这是修复方法: let f1 = Promise.all.bind(Promise) compose(f1, mapDomains)( x => x.close() ) 虽然我理解这一
Promise.all( mapDomains( x => x.close() ) )
我考虑过要创作它们:
compose(Promise.all, mapDomains)( x => x.close() )
然而,上述代码在没有约束Promise.all的情况下失败。这是修复方法:
let f1 = Promise.all.bind(Promise)
compose(f1, mapDomains)( x => x.close() )
虽然我理解这一切都是关于
这个
关键字在Javascript中如何工作的,但我想知道:为什么所有的
都没有绑定到它自己?这有什么价值吗?我猜这就是问题所在:
var承诺={
全部:函数(){
console.log(this.text)
},
文本:“一些文本”
};
答应我//一些文本
函数组合(f){
f();//这里的“this”不是您所期望的,除非您已经绑定了它
}
撰写(承诺,全部)//未定义
撰写(承诺、所有、约束(承诺))//一些文本
我猜是这样的问题:
var承诺={
全部:函数(){
console.log(this.text)
},
文本:“一些文本”
};
答应我//一些文本
函数组合(f){
f();//这里的“this”不是您所期望的,除非您已经绑定了它
}
撰写(承诺,全部)//未定义
撰写(承诺、所有、约束(承诺))//一些文本
您可能希望将其用于另一个Promise实现
//只是一个演示
//这应该是另一个有意义的图书馆
类MyPromise扩展了Promise{
然后(完成,拒绝){
const wrappedoncompleted=函数(arg){
log(`I是用${arg}`实现的`)
完成时返回(arg)
}
返回super.then.call(this,wrappedonCompleted,onRejected)
}
}
var all=Promise.all
const myPromise=all
.call(MyPromise,[MyPromise.resolve(1),MyPromise.resolve(2)])
.然后(([x,y])=>console.log(x,y))
log(myPromise instanceof myPromise)
您可能希望将其用于另一个Promise实现
//只是一个演示
//这应该是另一个有意义的图书馆
类MyPromise扩展了Promise{
然后(完成,拒绝){
const wrappedoncompleted=函数(arg){
log(`I是用${arg}`实现的`)
完成时返回(arg)
}
返回super.then.call(this,wrappedonCompleted,onRejected)
}
}
var all=Promise.all
const myPromise=all
.call(MyPromise,[MyPromise.resolve(1),MyPromise.resolve(2)])
.然后(([x,y])=>console.log(x,y))
console.log(myPromise的myPromise实例)