Es6 Promise 及 小程式如何進入Echarts 及 截圖軟體Snipaste.exe
十年河東,十年河西,莫欺少年窮
學無止境,精益求精
Promise 阮一峰文件:https://es6.ruanyifeng.com/#docs/promise
Snipaste 的使用可參考:https://www.cnblogs.com/cy0628/p/15023420.html
截圖軟體下載地址:https://www.snipaste.com/
在微信小程式中引入Echats,請參考官方文件:https://echarts.apache.org/handbook/zh/how-to/cross-platform/wechat-app/#%E5%9C%A8%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%B8%AD%E4%BD%BF%E7%94%A8-echarts
Promise 的用法,關鍵點描述
1、Promise.Race([]),Race字面意思為賽跑,他接受一個Promise物件陣列,陣列中的Promise物件誰最先執行完,則返回最先執行的Promise物件的結果,不會等待其他物件
onLoad: function (options) { let p1=new Promise((resolve,reject)=>{ setTimeout(() => { resolve("OK"); }, 1000); }); let p2=new Promise((resolve,reject)=>{ reject("OK"); }); let p3=new Promise((resolve,reject)=>{ resolve("OK"); }); const result=Promise.race([p1,p2,p3]); console.log(result); },
由於p1為一個非同步方法,耗時一秒,因此,race方法返回的為p2的執行結果,也就是異常的結果。
2、Promise.all([]),all字面意思為賽跑,他接受一個Promise物件陣列,陣列中的Promise物件只要有一個失敗,則返回失敗,如果有多個失敗,則返回第一個失敗的結果,所有執行成功,則返回所有成功結果。
onLoad: function (options) { let p1=new Promise((resolve,reject)=>{ setTimeout(() => { resolve("OK"); }, 1000); }); let p2=new Promise((resolve,reject)=>{ resolve("OK"); }); let p3=new Promise((resolve,reject)=>{ resolve("OK"); }); const result=Promise.all([p1,p2,p3]); console.log(result); },
全成功執行,返回所有結果,陣列形式:
一旦有一個或多個失敗,則返回第一個失敗的結果
3、Promise 的then 方法,then 方法接收的為一個Resolve 返回的Promise 物件,如果不是一個Promise 物件,則得到的結果為 未定義
onLoad: function (options) { let p1=new Promise((resolve,reject)=>{ setTimeout(() => { resolve("OK"); }, 1000); }); var p2 = p1.then(value=>{ console.log(value); }); var p3=p2.then(value=>{ console.log(value); }) },
執行結果,注意p3的結果為未定義
4、執行順序問題
付婷,你還那麼胖嗎?如果胖,就減肥肥吧。