Promise基本使用

Posted 嘴巴嘟嘟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Promise基本使用相关的知识,希望对你有一定的参考价值。

什么是Promise

在这里插入图片描述
有时候业务场景会是这种回调地狱的方式,很难分辨清除逻辑
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Promise三种状态

在这里插入图片描述

链式调用

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

小案例

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <table>
    <thead>
      <tr>
        <th>序号</th>
        <th>书名</th>
      </tr>
    </thead>
    <tbody id="dataList">
    </tbody>
  </table>
  <h2>添加图书</h2>
  <label for="name">
    书名:<input type="text" name="name" id="book_name">
  </label>
  <input type="button" value="保存图书" id="getall">

</body>
<script src="./js/jquery.min.js"></script>
<script>
  // Promise
  var htmlStr = '';
  new Promise((resolve, reject) => {
    $.ajax({
      type: "get",
      url: "http://127.0.0.1:8000/show_books/",
      contentType: "application/json",
      success: function (response) {
        resolve(response.list)
        reject()
      }
    });

  }).then((list) => {
    list.forEach(element => {
      htmlStr += '<tr><td>' +
        element.fields.book_name
        + '</td><td>' + element.fields.add_time
        + '</td></tr>';
    });
    document.getElementById("dataList").innerHTML = htmlStr

  }).catch(() => {
    alert('请求失败')
  })

  // 使用原始的请求方式
  /*  var htmlStr = '';
   $.ajax({
     type: "get",
     url: "http://127.0.0.1:8000/show_books/",
     contentType: "application/json",
     success: function (response) {
       if (response.status = 200) {
         var list = response.list;
         list.forEach(element => {
           htmlStr += '<tr><td>' +
             element.fields.book_name
             + '</td><td>' + element.fields.add_time
             + '</td></tr>';
         });
         document.getElementById("dataList").innerHTML = htmlStr
       } else {
         alert("错误啦")
       }
     }
   });
   // 保存图书功能
   document.getElementById("getall").onclick = () => {
     var book_name = document.getElementById("book_name").value
     $.ajax({
       type: "GET",
       url:'http://127.0.0.1:8000/add_book/?book_name='+String(book_name),

       success: function (response) {
         console.log(response)
         if(response.msg=="success"){
           alert('保存成功')
         }
         return location.replace(document.referrer);
       }
     });
   } */

</script>

</html>

以上是关于Promise基本使用的主要内容,如果未能解决你的问题,请参考以下文章

前端面试题之手写promise

什么时候然后从Promise.all()的子句运行?

html PHP代码片段: - AJAX基本示例:此代码演示了使用PHP和JavaScript实现的基本AJAX功能。

第125篇: 期约Promise基本特性

Typescript编译器无法从Promise resolve调用中推断类型

ES6——异步操作之Promise