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

在node.js中使用异步瀑布

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

在node.js中使用异步瀑布

首先确定步骤并将其编写为异步函数(带有回调参数)

  • 读取文件

    function readFile(readFileCallback) {fs.readFile('stocktest.json', function (error, file) {    if (error) {        readFileCallback(error);    } else {        readFileCallback(null, file);    }});

    }

  • 处理文件(在示例中,我删除了大部分console.log)

    function processFile(file, processFileCallback) {var stocksJson = JSON.parse(file);if (stocksJson[ticker] != null) {    stocksJson[ticker].price = value;    fs.writeFile('stocktest.json', JSON.stringify(stocksJson, null, 4), function (error) {        if (err) { processFileCallback(error);        } else { console.log("File successfully written"); processFileCallback(null);        }    });}else {    console.log(ticker + " doesn't exist on the json");    processFileCallback(null); //callback should always be called once (and only one time)}

    }

请注意,我在这里没有进行特定的错误处理,我将利用async.waterfall将错误处理集中在同一位置。

还请注意,如果您在异步函数中具有(if / else / switch / …)分支,则它总是(仅一次)调用回调。

用async.waterfall插入所有内容

async.waterfall([    readFile,    processFile], function (error) {    if (error) {        //handle readFile error or processFile error here    }});

干净的例子

先前的代码过于冗长,无法使说明更清楚。这是一个完整的示例:

async.waterfall([    function readFile(readFileCallback) {        fs.readFile('stocktest.json', readFileCallback);    },    function processFile(file, processFileCallback) {        var stocksJson = JSON.parse(file);        if (stocksJson[ticker] != null) { stocksJson[ticker].price = value; fs.writeFile('stocktest.json', JSON.stringify(stocksJson, null, 4), function (error) {     if (!err) {         console.log("File successfully written");     }     processFileCallback(err); });        }        else { console.log(ticker + " doesn't exist on the json"); processFileCallback(null);        }    }], function (error) {    if (error) {        //handle readFile error or processFile error here    }});

我之所以留下函数名称,是因为它有助于提高可读性并有助于使用chrome调试器之类的工具进行调试。

如果您使用下划线(在npm上),则还可以将第一个函数替换为

_.partial(fs.readFile,'stocktest.json')



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

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

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