AwaitPromise 中完成會透過 then 來接收訊息(資料),若是使用 await 則會等待這段函式完成後再往下繼續執行,一個卡住的概念。這邊沒有使用 await 語法時,原始碼最後一行的console.log並不會等 Promise 事件結束,而是先執行,在這個非同步的方法下並不會影響其他 ...
Promise - 處理同步、非同步事件 - 2 - all、race 與 chain 鏈結
上一篇(參考這邊)我們已經學習到如何簡單的建立 promise 物件來處理非同步、同步事件。但若我們想要傳入一些參數給 Promise 使用該怎麼辦呢? 傳入參數給 Promise 使用其實作法很簡單,我們只要建立一個 function 來包原本的 Promise 物件即可,以下我們同樣用跑步的範例 ...
Promise - 處理同步、非同步事件 - 1
callback hellJavaScript 中有很多非同步的事件,例如:AJAX、setTimeout、各種 event 事件(click,onchange…)等,由於 JavaScript 為單執行緒的程式語言(參考這邊),這些事件我們很常使用 callback,在一層包一層後就會出現知名的 ...
JavaScript核心概念 - 陳述式與表達式
陳述式(Statement)用於命令或指定一系列的操作,要注意的是此語法不會回傳一個結果 。例如: 宣告 var, let, const, 函式 function, 迭代 for 迴圈, 流程控制 if…else… ……等等,可參考 陳述式 MDN。 表達式(Expression)又可稱為表示式 ...
JavaScript核心概念 - Not defined 、 undefined 、 null 的區分
undefined 與 null首先,我們要先瞭解,undefined 與 null 為基本型別之一,他們各自都只有一個值,就是 undefined 與 null,雖然這兩種值轉型成 boolean 時,都會代表 false 的意思,不過他們在意義上是有差別的。以下方的範例來說,我們在宣告變數時,會 ...
JavaScript核心概念 - 執行續、同步與非同步:為何setTimeout不一定會在1秒後執行呢?
首先,我們要知道 JavaScript 是一個單執行緒 (single threaded) 的程式語言,一次只會執行一段程式碼,執行環境會形成執行堆疊,執行完畢才將堆疊抽離,但在所有非同步事件如 click、setTimeout、ajax…,不會執行這樣的行為。 故事說明ASin 剛買回來一份鹹酥雞 ...
JavaScript核心概念 - 提升(Hoisting)
Handsome Man 怎可能不是我,這一定是有什麼誤會…..當我們宣告變數並取用時,有時候會發生 undefined 、 is not defined 或是取得的值跟想像中的不一樣,囧: var HandsomeMan = '我';console.log(HandsomeMan); ……,Ha ...
JavaScript核心概念 - 範圍鍊
再次思考作用域與執行環境的關係首先,若忘記語法作用域與執行環境可以先參考這兩篇(語法作用域、執行環境與執行堆疊)。我們在語法作用域時有提到 callName()的範例,因此我們可以得知 CallName2() 內在調用 CallName1() 時,CallName1()內的變數 name 會查找到全 ...