3-Promise改變狀態與指定回撥順序的問題
阿新 • • 發佈:2022-01-02
<!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>
<script>
let p = new Promise((resolve, reject) => {
// 如果裡面是同步任務,就先改變狀態,然後執行then方法,並且執行相應的回撥
// 如果是非同步任務,就先執行then方法,並且指定回撥,然後再改變狀態(後面再執行相應回撥中的程式碼),兩種順序都可執行成功!---裡面是非同步任務的情況居多,非同步任務的時候如何延長then方法中的回撥,比如resolve的改變狀態是一秒,可以給then方法加2秒的定時器再去執行
// 總結:同步任務就是改變狀態,後指定回撥;非同步任務就是先指定回撥,後改變狀態
// 不管是同步任務,還是非同步任務,then方法中的資料都會在狀態改變完成之後,再去獲取
setTimeout(() => {
resolve("Ok");
}, 1000);
});
setTimeout(() => { p.then( (value) => { console.log(value); }, (reason) => { console.log(reason); } ); }, 2000); </script> </body> </html>
setTimeout(() => { p.then( (value) => { console.log(value); }, (reason) => { console.log(reason); } ); }, 2000); </script> </body> </html>