• js异步编程思想【node的精华】


    1. JS回调函数中无法改变外部变量的问题
    # abc = res 操作的时候,res还没有结果
    var abc;
    
    Article.findArticle({}, function (err, res) {
        if (err) {
            console.log(err);
        } else {
            //操作查询出的文章
            abc = res;
        }
    });
    
    
    https://blog.csdn.net/qq_23870025/article/details/77920898
    
    1. 遇到问题,无法push内容到外部的列表
    var dirList = [];
    var fileList =[];
    files.forEach(function(iterm){
      var fullPath =  path.join(wwwDir,iterm);
    
      // 异步  这里异步处理会无法修改外部的list,data的结果滞后于代码执行【不知道这样理解对不对】
      fs.stat(fullPath, function(err, data){
        if (err) {
            console.log(err);
        } else {
            if (data.isFile()){
              fileList.push(iterm)
              // console.log('file: ',fileList)
            }else{
              dirList.push(iterm)
            }
        }
      });
    
      // 同步 
      var stat = fs.lstatSync(fullPath);
      console.log(fullPath,stat.mtime)
      if (stat.isFile()){
        fileList.push({'fullPath':fullPath,'fileSise':stat.size,'mtime':stat.mtime});
      }else{
        console.log(fullPath)
        dirList.push(fullPath);
      }
    
    });
    
    console.log('dir: ',dirList)
    console.log('file: ',fileList)
    
    1. JS异步api的封装【必须通过回调函数】【回调函数作用:获取异步的结果】
    // 模板概念
    function fn(callback) {
      // var callback = function (data) { console.log(data) }
    
      setTimeout(function () {
        var data = 'hello'
        callback(data)
      }, 1000)
    }
    
    // 如果需要获取一个函数中异步操作的结果,则必须通过回调函数来获取
    fn(function (data) {
      console.log(data)
    })
    
    
    
    
    //应用
    /*
    *获取所有学生列表
    *callback
    * 第一个参数是err
        成功是null
        错误 错误对象
    * 第二个参数是 结果
        成功是 数组
        错误 undefined
    */
    exports.find = function (callback) {
      fs.readFile(dbPath, 'utf8', function (err, data) {
        if (err) {
          return callback(err)
        }
        callback(null, JSON.parse(data).students)
      })
    }
    
    //调用【find使用方法】
    var Student = require('./student')
    router.get('/students', function (req, res) {
      Student.find(function (err, students) {
        if (err) {
          return res.status(500).send('Server error.')
        }
        res.render('index.html', {
          fruits: [
            '苹果',
            '香蕉',
            '橘子'
          ],
          students: students
        })
      })
    })
    
    
  • 相关阅读:
    自我介绍
    注册表代码
    圣杯布局
    css的颜色设置
    c语言:第二次作业,循环结构
    c语言:第一次作业,分支,顺序结构
    C语言博客作业03函数
    第零次作业
    用JSP判断输入是质数还是非质数
    用JSP完成输入整形,单精度浮点数,双精度浮点数
  • 原文地址:https://www.cnblogs.com/amize/p/14869300.html
Copyright © 2020-2023  润新知