给定一个用于处理Promise值的命名函数
function handlePromise(data) { // do stuff with `data` return data }
a)传递命名函数handlePromise作为.then()的引用
promise.then(handlePromise)
b)使用匿名或命名函数作为.then()的参数,并将命名函数handlePromise返回给Promise值作为传递给.then()的匿名或命名函数的主体中的参数.
promise.then(function /*[functionName]*/(data) {return handlePromise(data)})
问题
>模式a)和b)之间是否有差异?
>如果1.的答案是肯定的,应该有什么区别
考虑使用任何一种模式?
解决方法
有可能创建一个没有参数传递时有差异的情况,但它是一个伸展,通常你应该传递f而不是函数(x){return f(x); }或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"