關於js中的promise,與其說是一種語法還不如說是一種思想!

2020-12-11 上世是朵花

在程式設計師群體中,存在著好多種鄙視鏈,其中一種鄙視鏈就是語言鄙視鏈了,大多數後端程式設計師都比較小瞧javascript這門語言了,但我個人認為即便如此,也不影響javascript的偉大,js作為一門前端語言,除了不能連接資料庫之外,有好多別致的語法,比如說js中的閉包,雖然被大多數人吐糟,但是在某些應用場景中也是特別的實用,另外關於異步請求,延時執行等函數的設計都是比較實用,其中有些語法感覺更是美妙,比如js中的promise,我個人感覺這不只是簡單的一個語法,他蘊含了一種偉大的思想,它能巧妙的解決一些場景中的問題。

作為前端語言,不要求性能如何之高,但是能夠做出讓用戶有種流暢的體驗還是非常有必要的,說起體驗流暢,好多人首先想到的就是異步執行,因為代碼的異步執行起碼能保證程序不會出現阻塞,卡到什麼地方,從而影響後面的程序進一步執行,這個異步思想固然很好,從某種程度上看似解決了這一個問題,但是異步的同時就不免會帶來一個問題,打亂了順序,有的時候我們的業務要求先做了A事情再做B事情,或者說根據A事情的結果決定做B事情還是C事情,這樣的話,單純的異步就無法很好的解決這一場景的情況,這種情況下promise便能很好的派上用場,因此我說它是一種偉大的思想,當然它的語法也比較簡單,大家網上搜搜就很快會了解,接下來,關於promise讓我們看看其他網友們有什麼看法吧!

網友一:promise 和 async await 連擊是不是更爽?

上世是朵花:這名網友該不會是經常涉足h5遊戲領域吧。

網友二:上次面一家公司 第一題讓十行代碼內手寫promise 當場去世

上世是朵花:還行吧,會者不難,難著不會,語法沒什麼,就那幾個關鍵詞,更重要的是想了解一下對這個思想的掌握與運用。

網友三:連promise都不能寫出來有點危險咯

上世是朵花:也沒這麼誇張吧,有的人可能沒聽說過,不過只要一提還是能很快了解並運用的。

網友四:我最近在了解d3,感覺二維圖像比三維應用範圍廣吧

上世是朵花:某前來看應該是這樣吧,感覺js這門語言的地位以後會加速提升的感覺。

網友五:那挺好的,也要多關注canvas相關的哦

上世是朵花:如今h5遊戲領域還真是離不開canvas啊。

網友六:嗯,複雜的應用確實沒寫過,不過最近已經加固了,之前的面試題也都自己寫出來了

上世是朵花:關於js方面的問題,有的不一定需要有經驗,只要了解透徹理論相似面試的時候也可以輕鬆應對,個人的一種模糊感覺認為是這樣。

關於js中的promise,我一直強調是一種思想,而非僅僅是一種語法,是因為我感覺這麼一個設計很是實用,解決了相當一部分場景下的問題,在計算機語言中我們經常會遇到一些可有可無的語法糖,只是增加了語言的豐富性,並沒有多大的實際用處,而promise的這種設計就不是這樣,不但非常實用,還會讓人感嘆這種設計中充斥著一種智慧。關於promise的語法這裡就沒必要多提了,只要是一個程式設計師,想必只要搜一下看看,很快就能掌握其中的精髓並能靈活運用了,最後,雖然今天提到的是js的內容,但重點不在js,而是promise的這種思想,既然是思想層面那麼就不局限於是什麼語言了,大家不妨也多琢磨一下這種思想,看看是不是在自己所學的語言中也能有類似的應用。

以上所有圖片均來之網際網路

大家好,我是「上世是朵花」。如果你有什麼好的看法或者觀點可以在評論區展現你的才華,互動交流,如果想進一步了解我,那就關注我吧!

相關焦點

  • 明制漢服搭配的「狄髻」,與其說一種髮髻,不如說是一種發冠
    在穿戴明制漢服的時候,女子通常會梳一種特定的髮髻,稱之為狄髻,此外還要配上一整套頭面首飾,這款髮髻和明制漢服可以說也非常搭調,四面鬢角脖頸碎發都收拾得很乾淨,髮髻只有頂心一處,簡潔大方,符合古代漢族人傳統觀念中,女子應該嫻靜端莊的審美。但是實際上,狄髻並不是名副其實是一種髮髻,而是一種發冠,那麼歷史上真正的狄髻,到底應該是怎樣的呢?
  • AngularJS的promise與$q
    >deferABC.resolve(function(){success:funcSuccess,error:funcError,notify:funcNotify})再說的直白點,Promise就是一種對執行結果不確定的一種預先定義
  • 只為那句承諾-大話Promise
    web前端自然不必多說了,各種框架你方登罷我上場,前兩年還是Angular一統天下,這兩年React又是大紅大紫,還有Vue最近異軍突起,好不紅火。要是僅僅是前端也就算了,但是由於Node.js人家在後臺也能寫,React Native的出現讓人家移動端也能做。好吧,還有硬體上也出現Ruff方案,好像硬體上也能寫了。真是讓人感覺挺有意思的事情。
  • 從JavaScript的事件循環到Promise
    JS線程是單線程運行機制,就是自己按順序做自己的事,瀏覽器線程用於交互和控制,JS可以操作DOM元素,說起JS中的異步時,我們需要注意的是,JS中其實有兩種異步,一種是基於瀏覽器的異步IO,比如Ajax,另外一種是基於計時方法setTimeout和setInterval的異步。
  • JavaScript中常用es6語法整理總結
    >它們的特點與var的區別:var在JavaScript中之前定義變量,我們用 var 關鍵字;它對比let有如下主要缺點:存在變量提升問題,降低 js 代碼的可閱讀性(變量會提升,變量值不會提升,所以輸出a=undefined)
  • 與其說寵物營養師是一種職業,不如說他們是一群技能型鏟屎官
    與其說寵物營養師是一種職業,不如說他們是一群技能型鏟屎官。楊小倩老師不光是一位營養師,同時她也是三個毛孩子的家長。在採訪的過程中,她也和聯萌君聊到了很多她和萌寵之間的小故事。如果你也感興趣的話,我們一起往下看吧。我和萌寵的十年之約我養的第一隻狗叫旺旺,這是我媽給起的名字。2007年10月7日,也就是國慶假期的最後一天,我和我媽在逛菜市場的時候,從一個小販手中買來的。
  • es6基本語法與語句有哪些?
    有些情況需要多次調用伺服器API,就會形成一個鏈式調用,比如為了完成一個功能,我們需要調用API1、API2、API3,依次按照順序進行調用,這個時候就會出現回調地獄的問題1.3 promise詳解1.3.1 語法
  • 寧肯《思想的菸斗》:一種化整為零的寫作
    對於一個寫作者來說,最終還是要落在紙上,才覺得是真正的文字,尤其是像寧肯這樣的寫作者,對文字始終懷有深深的敬意,因此,他的微博結集《思想的菸斗》固然是一種化整為零的寫作,但它仍然是寫作——寧肯稱之為「微寫作」,與他龐大、艱難的長篇小說寫作形成互補。
  • 說廢話是思想僵化的一種表現
    他說,A代表成功,X代表艱苦的工作,Y代表休息,Z代表少說廢話。這位大科學家鄭重地把少說廢話列為他取得事業成功的基本條件之一,耐人尋味。  何謂廢話?廢話就是毫無價值的套話、空話、大話之類。本來,無論是寫文章,或者是會議上發言、作報告,理應言之有物,開門見山。力求有新意。這樣才能給人啟迪,有利於交流思想,推進工作。  可是,現在有些人寫文章或講話,往往套話、空話連篇。
  • 關於JS事件循環機制,我今天終於整明白了
    等你前邊的人都完事了,櫃員把你叫過去辦了你的業務,這時候就是同步隊列中的任務執行完了,主線程會處理異步隊列中的任務。同步任務和異步任務這裡說的異步任務,它的意思是包含了獨立於主執行棧之外的宏任務和微任務。
  • 與其說是別人讓你痛苦,不如說是自己的修養不夠
    與其說是別人讓你痛苦,不如說是自己的修養不夠1:不要總是將自己的痛苦向別人哭訴抱怨,開始時,他們會同情,之後會麻木,再後來會煩躁,最後會鄙視;所以,大家都不容易,自己要學會承受擔當,其實,能拯救自己的只有你的心靈。
  • 用了5 年React,我不喜歡 Vue.js 的地方有這些
    引言:我儘量能客觀地來表述,但是您肯定會感受到我的一些主觀立場,畢竟,在過去 5 年中,我在專職用 React,顯然,它是我在 UI 框架中的首選。模板Vue.js 最大的一個特點(坦率地說,Vue.js 最大的優勢)就是其編寫 UI 的模板語法。
  • 一個高性能js動畫庫velocity.js簡介
    因此要製作高性能js動畫,可能不得不放棄jquery,轉而使用原生js製作動畫。那有沒有一種js高性能動效庫,既像jquery一樣簡單易用,動畫又高性能?這就是velocity.js動畫庫了。Velocity 不僅包含了 $.animate() 的全部功能, 還擁有:顏色動畫、轉換動畫(transforms)、循環、 緩動、SVG 動畫、和 滾動動畫 等特色功能。
  • 如何使用Promise.race() 和 Promise.any() ?
    如果你還沒有開始學習 Promise ,建議你這樣做。Promise包含幾種非常有用的內置方法。今天我們主要介紹這兩種方法。Promise.race(iterable) 方法返回一個 promise,一旦迭代器中的某個promise解決或拒絕,返回的 promise 就會解決或拒絕。與Promise.any()方法不同,Promise.race()方法主要關注 Promise 是否已解決,而不管其被解決還是被拒絕。
  • javascript基礎教程 js引入方式
    外鏈式:在 html 文檔中寫一個 script 標籤,並且設置 src 屬性,src 的屬性值引用一個 js 文件資源,而 js 代碼寫在 js 文件中使用外鏈式引入 js 文件時,script 標籤裡面不能再寫 js 代碼了,即使寫了也不會執行
  • ES6中的Promise對象到底如何使用?
    Promise是ES6語法中新增的一個對象,主要為JavaScript異步編程提供一種解決方案。也許有人會問,為什麼要專門為JavaScript提供一種異步編程的解決方案啊?這是由JavaScript天生缺陷造成的。JavaScript本身是一種單線程程式語言,不支持多線程,所以,很多時候,需要使用異步來平衡這種先天的不足。
  • 理解異步之美——Promise與async await(二)
    (就是一種承諾喲)下面我們要去了解一下它的工作流程。解:省時、網上太多了、本質還是要了解思想)話不多說開始咯咱們先大體梳理一下實現的東西要能幹什麼?提一嘴 reject方法沒有執行done函數會導致以下情況一:在new promise實例過程中執行的callback函數,在函數執行的過程中肯定會調用resolve或者reject(兩個都調用也可能)。
  • vue.js初入門(四模板語法)
    文本數據綁定最常見的形式就是使用「Mustache」語法 (雙大括號) 的文本插值:為了輸出真正的 HTML ,你需要使用 v-html 指令:效果:屬性雙大括號不能在 HTML 屬性中使用,該使用 v-bind 指令:效果:這對布爾值的屬性也有效 —— 如果條件被求值為 false
  • ReactJS,AngularJS, Vue.js優劣對比分析
    在全球大範圍看,React和Angular依然遙遙領先,Vue.js這位後起之秀還需努力做到全球化!為了保證可讀性,本文採用意譯而非直譯。另外,本文版權歸原作者所有,翻譯僅用於學習。JavaScript框架的更新節奏可以說日新月異,我們可以看到Angular不停地在發布新的版本,ReactJS和Vue.js也不甘落後。我們來看看最近5年Google的搜索趨勢。圖中藍色、紅色和黃色分別表示Angular、React和Vue.js。在2013-2014年間,React和Angular的熱度略微有些許差別。之後,它們之間的差距逐漸拉大。
  • 前端ES6中Promise的運行原理第一篇
    Promise的作用它是異步編程的一種方式,它比傳統的異步回調和事件更合理也更優雅!從Promise的使用中能看出什麼?Promise鏈式調用我們把demo1換一種書寫的形式對象,每個promise對象除了掛載一個運行狀態外,還掛載運行結果、下一個promise對象,以及then中的兩個參數函數。