nodejs Api和ECMAScript新特性

 

 

  ES7新特性:Async Functions (異步函數):javascript

     異步是什麼css

   沒法當即得到執行結果,知足某種條件的時候才執行html

   JS中的異步操做:一、定時器都是異步操做二、事件監聽(事件綁定)都是異步操做三、AJAX中通常咱們都採起異步操做(也能夠同步)四、回調函數能夠理解爲異步(不是嚴謹的異步操做)剩下的都是同步處理java

 

   示例: for (var i = 1; i <= 3; i++) {node

        setTimeout(function(){es6

          console.log(i);編程

        }, 0);promise

        };瀏覽器

 

 

 

     異步的好處異步

    Javascript語言的執行環境是"單線程"(single thread)。 所謂"單線程",就是指一次只能完成一件任務。若是有多個任務,就必須排隊,前面一個任務完成,再執行後面一個任務,以此類推。

 這種模式的好處是實現起來比較簡單,執行環境相對單純;壞處是隻要有一個任務耗時很長,後面的任務都必須排隊等着,會拖延整個程序的執行。常見的瀏覽器無響應(假死),每每就是由於某一段Javascript代碼長時間運行(好比死循環),致使整個頁面卡在這個地方,其餘任務沒法執行。爲了解決這個問題,Javascript語言將任務的執行模式分紅兩種:同步(Synchronous)和異步(Asynchronous)。

  • 異步函數聲明: async function foo() {}
  • 異步函數表達式: const foo = async function () {};
  • 異步函數定義:let obj = { async foo() {} }
  • 異步箭頭函數: const foo = async () => {};

  async(異步) 函數老是返回 Promises,Promise對象必須實現then方法,then是promise規範的核心,並且then方法也必須返回一個Promise對象,同一個Promise對象能夠註冊多個then方法,而且回調的執行順序跟它們的註冊順序一致;

 

Promise對象:Promise是異步編程的一種解決方案

 //定義一個Promise對象玩玩

var p = new Promise(function(resolve, reject){
    //作一些異步操做
    setTimeout(function(){
        console.log('執行完成');
        resolve('隨便什麼數據');
    }, 2000);
});

 

 

 

 

 

參考技術文檔:

對js Promise理解:https://blog.csdn.net/qq_29849641/article/details/54970328

es6學習筆記10--箭頭函數:https://www.cnblogs.com/huansky/p/5684867.html

nodejs之async異步編程:http://cnodejs.org/topic/54acfbb5ce87bace2444cbfb

ES2017 新特性:Async Functions (異步函數):http://www.css88.com/archives/7731

淺談ES6的Promise對象:https://www.jianshu.com/p/c98eb98bd00c

完全理解Promise對象——用es5語法實現一個本身的Promise(上篇):https://www.cnblogs.com/malingyang/p/6535805.html

大白話講解Promise(一):https://www.cnblogs.com/lvdabao/p/es6-promise-1.html

Javascript異步編程的4種方法:http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html?bsh_bid=1736591883

相關文章
相關標籤/搜索