日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

语言解决猜神童年龄的问题_JavaScript语言基础:Promise是如何解决回调地狱问题的?...

發布時間:2025/4/5 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 语言解决猜神童年龄的问题_JavaScript语言基础:Promise是如何解决回调地狱问题的?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接:https://juejin.im/post/5aa1fce051882555677e21aa

眾所周知的,Javascript是一種單線程的語言,所有的代碼必須按照所謂的“自上而下”的順序來執行。本特性帶來的問題就是,一些將來的、未知的操作,必須異步實現。本文將討論一個比較常見的異步解決方案——Promise。

Promise解決的問題

相信每個前端都遇到過這樣一個問題,當一個異步任務的執行需要依賴另一個異步任務的結果時,一般會將兩個異步任務嵌套起來,這種情況發生一兩次還可以,但是發生很多次之后,代碼就會變成這個熊樣:

async1(function(){async2(function(){async3(function(async4(funciton(){async5(function(){ // 直到地老天荒});});));});});

這就是所謂的回調地獄,代碼層層嵌套,環環相扣,很明顯,邏輯稍微復雜一些,這樣的程序就會變得難以維護。

Promise的基本用法

時至今日,很多現代瀏覽器都已經實現,但是為了兼容,建議自行對Promise進行封裝或者使用第三方的解決方案(如webpack對es6語法進行編譯)。得到一個Promise構造函數,新建一個Promise的實例:

var _promise = new Promise(function(resolve, reject){setTimeout(function(){var rand = Math.random();if(rand<0.5){resolve("resolve" + rand);}else{reject("reject" + rand);}},1000);});

由上所示,Promise的構造函數接收一個函數作為參數,該函數接受兩個額外的函數,resolve和reject,這兩個函數分別代表將當前Promise置為fulfilled(解決)和rejected(拒絕)兩個狀態。Promise正是通過這兩個狀態來控制異步操作的結果。接下來我們將討論Promise的用法,實際上Promise上的實例 _promise是一個對象,不是一個函數。在聲明的時候,Promise傳遞的參數函數會立即執行,因此Promise使用的正確姿勢是在其外層再包裹一層函數。

var run = function(){var _promise = new Promise(function(resolve, reject){setTimeout(function(){var rand = Math.random();if(rand<0.5){resolve("resolve" + rand);}else{reject("reject" + rand);}},1000);});return _promise;}run();

這是Promise的正常用法,接下來,就是對異步操作結果的處理,接著上面創建的函數run()

run().then(function(data){console.log(data);});

每個Promise的實例對象,都有一個then的方法,這個方法就是用來處理之前各種異步邏輯的結果。

那么, 這么做有什么用?

當然有用,到目前為止,我們學會了Promise的基本流程,但是這種用法和嵌套回調函數似乎沒什么區別,而且增加了復雜度。但是我們說了,Promise的用處,實際上是在于多重異步操作相互依賴的情況下,對于邏輯流程的控制。Promise正是通過對兩種狀態的控制,以此來解決流程的控制。請看如下代碼:

run().then(function(data){//處理resolve的代碼cosnole.log("Promise被置為resolve

總結

以上是生活随笔為你收集整理的语言解决猜神童年龄的问题_JavaScript语言基础:Promise是如何解决回调地狱问题的?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。