美文网首页
38-fetch、async(await)、mock

38-fetch、async(await)、mock

作者: 早起的鸟儿 | 来源:发表于2019-10-29 14:48 被阅读0次

一、fetch:类似$.ajax、axios。Fetch是基于promise设计的
格式:

fetch('路径', {
    method: "POST",
    headers: {
        'Content-Type': 'application/json'
    },
    params: {
        user: user.value,
        pwd: pwd.value
    }
}).then(function (res) {
    return res.json();
})

二、async await:解决异步

async函数是什么?一句话,async函数就是Generator函数的语法糖。

比如有一个Generator函数,依次读取两个文件。

var fs = require('fs');

var readFile = function (fileName) {
  return new Promise(function (resolve, reject) {
    fs.readFile(fileName, function(error, data) {
      if (error) reject(error);
      resolve(data);
    });
  });
};

var gen = function* (){
  var f1 = yield readFile('/etc/fstab');
  var f2 = yield readFile('/etc/shells');
  console.log(f1.toString());
  console.log(f2.toString());
};

写成async函数,就是下面这样。

var asyncReadFile = async function (){
  var f1 = await readFile('/etc/fstab');
  var f2 = await readFile('/etc/shells');
  console.log(f1.toString());
  console.log(f2.toString());
};

一比较就会发现,async函数就是将Generator函数的星号(*)替换成async,将yield替换成await,仅此而已。

三、mock:假如没有后台,或者是前端已经写完功能,但后台还没有写完接口就需要自己模拟数据接口

  1. 首先需要下载
npm i fetch-mock
  1. 可以新建一个api.js
import FetchMock from 'fetch-mock';
//FetchMock.mock("/login",{code:200});
//第一个参数是路径,第二个参数是返回的数据  页面打印{code:200}
FetchMock.mock("/login", (url, params) => { 
//相当于后台,当我输入用户名为a,密码是1的时候
    console.log(url, params);
    /*
       {method: "POST", headers: {…}, params: {…}}
        headers: {Content-Type: "application/json"}
        method: "POST"
        params: {user: "a", pwd: "1"}
   */
        let p = params.params;
        if(p.user == "admin"){
            if(p.pwd == "admin"){
                return {code:400,msg:"恭喜登陆成功"}
            }else{
                return {code:401,msg:"密码错误"}
            }
        }else{
            return {code:402,msg:"用户名不正确"}
        }
});
  1. 引入使用
import $ from "../common/getId";
import formFetch from "../common/getApi"
const event = () => {
    let btn = $("btn"),
        user = $("user"),
        pwd = $("pwd");

    btn.onclick = async () => {
        let data = await formFetch("/login",{
            user:user.value,
            pwd:pwd.value
        })
        console.log(data)
    }
}

相关文章

  • async和await

    浅谈Async/Await用 async/await 来处理异步 async和await async:声明一个异步...

  • ES8(一) —— async&await

    目录 async和普通函数的区别 await async/await处理多回调异步 async和await必须配合...

  • async

    async/await特点 async/await更加语义化,async是“异步”的简写,async functi...

  • ES6中的好东西

    1 Await/Async 前端的回调时代我没有赶上,我赶上的是await/async时代。await和async...

  • Vue接口调用方式(三)async/await用法

    async/await用法 1. async/await的基本用法 async/await是ES7引入的新语法,可...

  • nodejs async 使用简介

    async await node async 使用

  • JS 中的 async/await

    async/await 是什么? async/await 是 ES2017 中新增的异步解决方案; await 只...

  • ES2017 async 函数

    async 和 await 在干什么 每个名称都有意义async : 异步await: async wait简...

  • async/await

    async/await async/await 是Generator的语法糖。 Generator 通过将Gene...

  • 小程序-云开发

    async和await async:异步(无等待)await:等待(是为了同步) 一、await 关键字只在 as...

网友评论

      本文标题:38-fetch、async(await)、mock

      本文链接:https://www.haomeiwen.com/subject/sfocmctx.html