zoukankan      html  css  js  c++  java
  • koa2 使用 async 、await、promise解决异步的问题

    koa代码编写上避免了多层的嵌套异步函数调用 async await来解决异步
    - async await 需要依赖于promise

     三主角: __函数前面 async, 内部才能await,要想await能有用,就用promise包裹他__
    

      1._函数前面 async

    app.use(async (ctx)=>{
            if(ctx.url==='/') {
              let  data=await  asyncReadFile();
              ctx.body=data;
              // 设置响应头
              ctx.set('content-type','text/html;charset=utf-8');  //content-type: text/html;charset=utf-8
            } else {
                 ctx.body='ok';
            }
        });

    2.内部才能await

    let  data=await  asyncReadFile();

    3. 返回一个Promise 对象(包含两个参数)

    function asyncReadFile() {
       return new Promise(function(resolve,reject) {
          fs.readFile('./index.html',(err,data)=>{
            // 1:失败,err  2:成功需要data
              if(err) {
                 reject(err);
                 return;
              }
              // 成功
              resolve(data);
          });
       });
    }

    网整例子:

    app.js

    const  fs   = require('fs');
    const  koa  = require('koa');
    let  app=new  koa();
    function asyncReadFile() {
       return new Promise(function(resolve,reject) {
          fs.readFile('./index.html',(err,data)=>{
            // 1:失败,err  2:成功需要data
              if(err) {
                 reject(err);
                 return;
              }
              // 成功
              resolve(data);
          });
       });
    }
    
    
    app.use(async (ctx)=>{
            if(ctx.url==='/') {
              let  data=await  asyncReadFile();
              ctx.body=data;
              // 设置响应头
              ctx.set('content-type','text/html;charset=utf-8');  //content-type: text/html;charset=utf-8
            } else {
                 ctx.body='ok';
            }
        });
    
    app.listen(1000);

    html

    <!DOCTYPE html>
    <html lang="en" dir="ltr">
      <head>
        <meta charset="utf-8">
        <title></title>
      </head>
      <body>
        <h1>hell  world</h1>
      </body>
    </html>

    效果:

  • 相关阅读:
    javascript 自定义事件
    tf.control_dependencies
    神经网络全连接层+softmax:
    Tensorflow图级别随机数设置-tf.set_random_seed(seed)
    tensorflow-GPU配置
    python-生成器(generation)
    编码器内容-去噪
    Group Convolution组卷积
    VSCode 设置vue 保存自动格式化代码
    redis外部连接
  • 原文地址:https://www.cnblogs.com/guangzhou11/p/10174349.html
Copyright © 2011-2022 走看看