Promise.resolve(123)
.then(String)
.then((data)=>{
console.log(data)
})
在这里工作正常。
但是,如果我将函数分配给变量,然后传递给Promise's .then()
。该函数只会忽略我的回调。
例如,
Promise.resolve(123)
.then(String)
.then(myFunc)
var myFunc = (data)=>{
console.log(data)
}
它不打印任何内容。唯一的区别是,该函数已分配给变量,然后传递给.then(),而不是直接传递。但据我所知,应该没有区别。为什么会这样?
(顺便说一句,我也尝试了ES6之前的传统函数语法,但没有区别)
答案 0 :(得分:6)
如注释中所示,使用分配给变量的函数不是问题。使用尚无值的变量是一个问题。
唯一的区别是将函数分配给变量,然后传递给.then(),而不是直接传递。
不,实际上,它已传递给.then()
然后分配给变量的。有很大的不同。
在此示例中,myFunc
在使用时为undefined
:
Promise.resolve(123)
.then(String)
.then(myFunc)
console.log('myFunc is', myFunc);
var myFunc = (data) => {
console.log(data)
}
解决方案:使用之前,请确保myFunc
的值 :
var myFunc = (data) => {
console.log(data)
}
Promise.resolve(123)
.then(String)
.then(myFunc)
console.log('myFunc is', myFunc);