给定一个用于处理的命名函数Promise
value
function handlePromise(data) {
// do stuff with `data`
return data
}
a) 传递命名函数handlePromise
作为参考.then()
promise.then(handlePromise)
b) 使用匿名或命名函数作为参数.then()
并返回指定的函数handlePromise
with Promise
值作为匿名或命名函数体内的参数传递给.then()
promise.then(function /*[functionName]*/(data) {return handlePromise(data)})
问题
模式 a) 和 b) 之间有什么区别吗?
如果 1. 的答案是肯定的,那么应该有哪些差异
使用任一模式时都考虑过吗?
可以创建一种情况,当不传递参数时存在差异,但这是一种延伸,通常您应该传递f
并不是function(x) { return f(x); }
or x => f(x)
因为它更干净。
这是一个导致差异的示例,其基本原理是采用参数的函数可能会导致这些参数产生副作用:
function f() {
if(arguments.length === 0) console.log("win");
else console.log("Hello World");
}
const delay = ms => new Promise(r => setTimeout(r, ms)); // just a delay
delay(500).then(f); // logs "Hello World";
delay(500).then(() => f()) // logs "win"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)