Javascript:如何确定是否承诺函数?

Javascript:如何确定是否承诺函数?,javascript,asynchronous,promise,Javascript,Asynchronous,Promise,考虑小助手函数,其中一些函数显然是async/promise的候选函数(我认为我理解它们): 而这: exports.function addOne(number){ return new Promise(resolve => { resolve(number + 1); }); } 似乎有点过分了 确定他们是否应该承诺其函数的规则是什么?如果我需要按特定顺序执行多个异步函数,我通常使用承诺。例如,如果我需要发出三个请求并等待它们全部返回,然后才能组合数据并处理它们,这是

考虑小助手函数,其中一些函数显然是async/promise的候选函数(我认为我理解它们):

而这:

exports.function addOne(number){
  return new Promise(resolve => {
    resolve(number + 1);
  });
}
似乎有点过分了


确定他们是否应该承诺其函数的规则是什么?

如果我需要按特定顺序执行多个异步函数,我通常使用承诺。例如,如果我需要发出三个请求并等待它们全部返回,然后才能组合数据并处理它们,这是承诺的一个很好的用例。在您的情况下,假设您有一个文件,并且您需要等待来自服务的文件和元数据都被加载,您可以将它们放在一个承诺中

如果您希望优化长时间运行的流程上的操作,我会更多地关注web workers,而不是使用承诺。它们在UI线程之外操作,并使用消息将其进度传递回UI线程。它是基于事件的,但不需要承诺。唯一需要注意的是,您不能在web worker中对DOM执行操作

更多关于网络工作者的信息,请点击此处:

决定他们是否应该履行职责的规则是什么

其实很简单:

  • 当函数执行异步操作时,它应该返回对结果的承诺
  • 当函数只执行同步操作时,它不应返回承诺

看,这并不能真正回答问题。我想这就是问题的关键:除了速度之外,是什么让X+1同步?它在返回(“背景”)后什么都不做?我以为你知道。一般来说,默认情况下,所有操作都是同步的。如果函数只执行一项异步操作,而不需要按照特定的顺序执行,或者等待其他事件完成,则会造成过多的开销,而且可能不必要。可以用一个简单的回调来代替。@nixkuroi您能详细说明一下吗?你是说对于某些异步函数来说,回调比返回承诺要好吗?@nixkuroi,你似乎是这么认为的。承诺是结果值,它们比回调更容易、更安全。他们甚至有。但无论如何,这种讨论都是无关紧要的,OP已经决定使用承诺。如果他使用回调,他的问题应该是“如何确定我的函数是否应该接受回调?”。
exports.function addOne(number){
  return new Promise(resolve => {
    resolve(number + 1);
  });
}