ES6有關非同步式

出處: Youtube 彭彭的課程  

JavaScript ES6:什麼是非同步程式 ~ JavaScript ES6:使用回呼函式處理非同步程式

Udemy JavaScript、React、Flask、MongoDB 網站全端開發:從入門到進階

以下是非同步程式的執行流程

XMLHttpRequest

若想要送出 HTTP 請求,必須建立XMLHttpRequest 物件,開啟一個 URL,並發起請求。transaction完成後,物件將會回傳包含response body之類的資訊。

測試


    function getData(){
        //2.做Ajax連線
        let req = new XMLHttpRequest();
        req.open("get","https:/.......");
        req.onload=function(){
            //等待一段時間後,子程式完成連線,觸發主程式的load事件,取得資料
            alert(this.responseText);
        };
        req.send();
    }
    let result = getData();
    alert(result);//會先執行 印出undefined
  

alert(result);//會先執行 印出undefined

等待一段時間後,子程式完成連線,觸發主程式的load事件,取得資料
alert(this.responseText);

如果要得到伺服器的回傳值,不能用getData()的回傳值,可以用回呼函式來得到伺服器的回傳值


    function getData(callback){
        let req = new XMLHttpRequest();
        req.open("get","https://training.pada-x.com/resources/javascript-es6-react/data.out");
        req.onload=function(){
            callback(this.responseText);
        };
        req.send();
    }
    getData(function(result){
        alert(result);
    });