一、Promise是什么?
Promise是異步編程的一種解決方案。
二、那什么時候我們會來處理異步事件呢?
1、 一種很常見的場景應該就是網絡請求了。
我們封裝一個網絡請求的函數,因為不能立即拿到結果,所以不能像簡單的3+4=7一樣將結果返回。所以往往我們會傳入另外一個函數,在數據請求成功時,將數據通過傳入的函數回調出去。如果只是一個簡單的網絡請求,那么這種方案不會給我們帶來很大的麻煩。
三、基本使用
01-Promise的基本使用.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script> // 什么情況下會用到Promise? // 一般情況下是有異步操作時,使用Promise對這個異步操作進行封裝 // new -> 構造函數(1.保存了一些狀態信息 2.執行傳入的函數) // 在執行傳入的回調函數時, 會傳入兩個參數, resolve, reject.本身又是函數 new Promise((resolve, reject) => { setTimeout(() => { // 成功的時候調用resolve // resolve('Hello World') // 失敗的時候調用reject reject('error message') }, 1000) }).then((data) => { // 1.100行的處理代碼 console.log(data); }).catch((err) => { console.log(err); }) </script> </body> </html>
02-Promise的另外處理形式.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script> new Promise((resolve, reject) => { setTimeout(() => { resolve('Hello Vuejs') //reject('error message') }, 1000) }).then(data => { console.log(data); }, err => { console.log(err); }) </script> </body> </html>
四、鏈式調用
03-Promise的鏈式調用.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script> // 參數 -> 函數(resolve, reject) // resolve, reject本身它們又是函數 // 鏈式編程 new Promise((resolve, reject) => { // 第一次網絡請求的代碼 setTimeout(() => { resolve("hello") }, 1000) }).then(data => { // 第一次拿到結果的處理代碼 console.log(data); return data + '1111'; }).then(data => { // 第二次處理的代碼 console.log(data); return data + '2222' }).then(data => { // 第三處理的代碼 console.log(data); }) </script> </body> </html>
推薦一個適合零基礎學習SQL的網站: 不用安裝數據庫,在線輕松學習SQL!