考虑小辅助函数,其中一些是async / promise的明显候选者(我认为我理解它们):
exports.function processFile(file){
return new Promise(resolve => {
// super long processing of file
resolve(file);
});
}
虽然这个:
exports.function addOne(number){
return new Promise(resolve => {
resolve(number + 1);
});
}
似乎过度杀伤。
决定他们是否应该承诺履行其职能的规则是什么?
答案 0 :(得分:1)
如果我需要按特定顺序执行多个异步函数,我通常会使用一个promise。例如,如果我需要发出三个请求并等待它们全部返回,然后才能组合数据并处理它们,那么这是一个很好的承诺用例。在你的情况下,让我们说你有一个文件,你需要等到服务中的文件和元数据都被加载,你可以把它们放在一个承诺中。
如果您正在寻求优化长时间运行流程的运营,我会更多地关注网络工作者而不是使用承诺。它们在UI线程之外运行,并使用消息将其进度传递回UI线程。这是基于事件的,但不需要承诺。唯一需要注意的是,您无法对Web worker中的DOM执行操作。
有关此处网络工作者的更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers
答案 1 :(得分:1)
决定他们是否应该承诺履行其职能的规则是什么?
实际上非常简单: