栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

解决承诺一个接一个(即按顺序)?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解决承诺一个接一个(即按顺序)?

2017年更新 :如果环境支持,我将使用异步功能:

async function readFiles(files) {  for(const file of files) {    await readFile(file);  }};

如果需要,可以使用异步生成器(如果您的环境支持)将读取文件的时间推迟到需要它们之前:

async function* readFiles(files) {  for(const file of files) {    yield await readFile(file);  }};

更新:再次考虑-我可能改用for循环:

var readFiles = function(files) {  var p = Promise.resolve(); // Q() in q  files.forEach(file =>      p = p.then(() => readFile(file));   );  return p;};

或更紧凑,减少:

var readFiles = function(files) {  return files.reduce((p, file) => {     return p.then(() => readFile(file));  }, Promise.resolve()); // initial};

在其他Promise库(如when和Bluebird)中,您可以使用此方法。

例如,蓝鸟将是:

var Promise = require("bluebird");var fs = Promise.promisifyAll(require("fs"));var readAll = Promise.resolve(files).map(fs.readFileAsync,{concurrency: 1 });// if the order matters, you can use Promise.each instead and omit concurrency paramreadAll.then(function(allFileContents){    // do stuff to read files.});

尽管今天确实没有理由 使用异步等待。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/432231.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号