一. promise 對象html
promise是ECMAscript 6 提供的構造函數, new Promise() 建立的對象表明了未來要發生的事件,它有以下特色:json
1)狀態一旦發生變化,就不受外界影響; 任什麼時候候給Promise 對象添加回調函數,它都保持在這個狀態promise
其狀態變化有如下兩種形式:app
pending(初始狀態) --> fulfilled(操做成功)異步
pending --> rejected(操做失敗)函數
2)實例化的 promise 對象能夠調用 .then() 和 .catch()方法接收 onFUlfilled 和 onRejected 狀態的返回值post
阮一峯大神的理解:fetch
*有了Promise對象,就能夠將異步操做以同步操做的流程表達出來,避免了層層嵌套的回調函數。此外,Promise對象提供統一的接 口,使得控制異步操做更加容易。
url
二. fetch 發get 和 post 請求,返回的是一個promise對象spa
//1.發送get請求, 參數在url中拼接 var num = 1; fetch("/user/queryUser?page="+num+"&pageSize=5").then(res =>res.json()).then(data =>{ console.log(data); $('#userBox').html(template('userTpl', {data: data})) }).catch(err =>{ console.log(err);
})
//2.發送post 請求, 參數在 body中傳遞, 並且必須轉換爲字符串 fetch('url', { method: 'post', //body: JSON.stringify(data), body: JSON.stringify({ name: 'nora', age: 18 }), headers : { 'Content-Type' : 'application/json' } }).then(res => res.json()).then(data =>{ //console.log(data); if(data.success) { location.reload() } }).catch(err =>{ alert(err); })