美文网首页
promise的使用场景

promise的使用场景

作者: web_jianshu | 来源:发表于2020-05-21 10:30 被阅读0次
<!DOCTYPE html>

<html lang="en">

  <head>

    <meta charset="UTF-8" />

    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <meta http-equiv="X-UA-Compatible" content="ie=edge" />

    <title>Document</title>

  </head>

  <body>

    <form action="" id="user_form"></form>

    <script type="text/template" id="tpl">

      <div>

          <label for="">用户名</label>

          <input type="text" value="{{ user.username }}" value="">

      </div>

      <div>

          <label for="">年龄</label>

          <input type="text" value="{{ user.age }}">

      </div>

      <div>

          <label for="">职业</label>

          <select name="" id="">

            {{ each jobs }}

            {{ if user.job === $value.id }}

              <option value="{{ $value.id }}" selected>{{ $value.name }}</option>

              {{ else }}

              <option value="{{ $value.id }}">{{ $value.name }}</option>

            {{ /if }}

            {{ /each }}

          </select>

      </div>

    </script>

    <script src="./node_modules/art-template/lib/template-web.js"></script>

    <script src="./node_modules/jquery/dist/jquery.js"></script>

    <script>

      // 用户表

      //   其中一个接口获取用户数据

      //   职业:2

      // 职业信息表

      //   其中一个接口获取所有的职业信息

      // get('http://127.0.0.1:3000/users/4', function (userData) {

      //     get('http://127.0.0.1:3000/jobs', function (jobsData) {

      //         var htmlStr = template('tpl', {

      //             user: JSON.parse(userData),

      //             jobs: JSON.parse(jobsData)

      //         })

      //         console.log(htmlStr);

      //         document.querySelector('#user_form').innerHTML = htmlStr

      //     })

      // })

      // 这个 get 是 callback 方式的 API

      // function get(path, callback) {

      //     var xml = new XMLHttpRequest()

      //     xml.open('get', path, true)

      //     xml.send()

      //     // 当请求加载成功之后要调用指定的函数

      //     xml.onload = function () {

      //         // 我现在需要的到这里的 xml.responseText

      //         callback(xml.responseText)

      //     }

      // }

      // var data = {}

      // $.get('http://127.0.0.1:3000/users/4')

      //     .then(function (user) {

      //         data.user = user

      //         return $.get('http://127.0.0.1:3000/jobs')

      //     })

      //     .then(function (jobs) {

      //         data.jobs = jobs

      //         var htmlStr = template('tpl', data)

      //         document.querySelector('#user_form').innerHTML = htmlStr

      //     })

      var data = {};

      pGet("http://127.0.0.1:3000/users/4")

        .then(function(user) {

          data.user = user;

          return pGet("http://127.0.0.1:3000/jobs");

        })

        .then(function(jobs) {

          data.jobs = jobs;

          var htmlStr = template("tpl", data);

          document.querySelector("#user_form").innerHTML = htmlStr;

        })

        .catch(err => {

          throw err;

        });

      function pGet(path, callback) {

        return new Promise(function(resolve, reject) {

          var xml = new XMLHttpRequest();

          xml.open("get", path, true);

          xml.send();

          // 当请求加载成功之后要调用指定的函数

          xml.onload = function() {

            // 我现在需要得到这里的 xml.responseText

            callback && callback(JSON.parse(xml.responseText));

            resolve(JSON.parse(xml.responseText));

          };

          xml.onerror = function(err) {

            reject(err);

          };

        });

      }

      // callback方式

      // pGet('http://127.0.0.1:3000/users/4', function (data) {

      //     console.log(data);

      // })

      // .then方式

      // pGet("http://127.0.0.1:3000/users/4").then(function(data) {

      //     console.log(data);

      // });

    </script>

  </body>

</html>
  • data.json
{
  "users": [
    {
      "id": 1,
      "username": "admin",
      "age": 18,
      "job": 2
    },
    {
      "id": 2,
      "username": "admin2",
      "age": 18,
      "job": 4
    },
    {
      "id": 3,
      "username": "admin3",
      "age": 18,
      "job": 2
    },
    {
      "id": 4,
      "username": "admin4",
      "age": 18,
      "job": 3
    }
  ],
  "jobs": [
    {
      "id": 1,
      "name": "学生"
    },
    {
      "id": 2,
      "name": "教师"
    },
    {
      "id": 3,
      "name": "司机"
    },
    {
      "id": 4,
      "name": "画家"
    },
    {
      "id": 5,
      "name": "演员"
    },
    {
      "id": 6,
      "name": "医生"
    }
  ]
}

相关文章

网友评论

      本文标题:promise的使用场景

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