zoukankan      html  css  js  c++  java
  • node中异步变同步

    node之所以轻便高效,是因为它使用了事件驱动(事件环机制),因此在node中有大量的异步的回调函数。但是当异步回调里面嵌套异步回调的时候,就会发生一些混乱的事情,这个时候,我们就需要将嵌套的异步回调改变为同步,只有同步了才能获取一些变量或元素。
    下面使用一种方法介绍将异步变为同步,利用自执行函数和递归的思想:

    var http = require('http');
    var fs = require('fs');
    var server = http.createServer(function(req,res){
        fs.readdir('./dir/',function(err,files){
            var wenjianjia = [];
            (function iterator(i){  //自执行函数
                if(i == files.length){
                return;
                }
                fs.stat('./dir/'+files[i],function(err,stats){
                    if(stats.isDirectory()){
                        wenjianjia.push(files[i])
                    }
                    iterator(i+1);  //递归
                })
            })(0)
        })
        res.end()
    })
    server.listen(3000)
    

    上面端代码是要访问文件夹dir中的所有文件,并将其中的文件夹放入到文件夹数组中,当使用传统的for循环,在读取文件信息的时候,嵌套了一层回调函数,这个是异步里面套异步,获取files[i]值的时候出现了顺序的混乱,这时候我们使用自执行函数将嵌套的异步变为同步,就会按照顺序执行。

  • 相关阅读:
    DAG:区块链行业下一个引爆点?
    php7的新特性
    Linux中的冷热页机制概述
    撰写后台需求文档需要注意的那些事儿
    poj 1201 Intervals
    poj 1364
    poj Candies
    hdu 1429
    poj A Round Peg in a Ground Hole
    poj 1113Wall
  • 原文地址:https://www.cnblogs.com/rainbow8590/p/7118572.html
Copyright © 2011-2022 走看看