javascript – .then(functionReference)和.then(function(value){return functionReference(value)}之间有区别吗?

前端之家收集整理的这篇文章主要介绍了javascript – .then(functionReference)和.then(function(value){return functionReference(value)}之间有区别吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
给定一个用于处理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"

猜你在找的JavaScript相关文章