Skip to content

Commit d4d0f89

Browse files
committed
Translation zh-TW answer 102
1 parent 72a0b62 commit d4d0f89

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

zh-TW/README_zh-TW.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3231,6 +3231,49 @@ console.log(one, two, three)
32313231

32323232
`([] || 0 ||“”)`:空陣列`[]`是一個真值。這是第一個得到的真值。 `three`等於`[]`
32333233

3234+
</p>
3235+
</details>
3236+
3237+
---
3238+
###### 102. 依序輸出什麼內容?
3239+
3240+
```javascript
3241+
const myPromise = () => Promise.resolve('I have resolved!')
3242+
3243+
function firstFunction() {
3244+
myPromise().then(res => console.log(res))
3245+
console.log('second')
3246+
}
3247+
3248+
async function secondFunction() {
3249+
console.log(await myPromise())
3250+
console.log('second')
3251+
}
3252+
3253+
firstFunction()
3254+
secondFunction()
3255+
```
3256+
3257+
- A: `I have resolved!`, `second` and `I have resolved!`, `second`
3258+
- B: `second`, `I have resolved!` and `second`, `I have resolved!`
3259+
- C: `I have resolved!`, `second` and `second`, `I have resolved!`
3260+
- D: `second`, `I have resolved!` and `I have resolved!`, `second`
3261+
3262+
<details><summary><b>答案</b></summary>
3263+
<p>
3264+
3265+
#### 答案: D
3266+
3267+
3268+
有了promise,我們通常會說:當我想要呼叫某個函數,但是由於它可能需要一段時間,因此暫時將它放在一邊。只有當某個值被resolved/rejected,並且執行序為空時才使用這個值。
3269+
3270+
我們可以在`async`函數中通過`.then``await`關鍵字獲得該值。儘管我們可以通過`.then``await`獲得promise的值,但是它們的運作方式不同。
3271+
3272+
`firstFunction`中,當執行到`myPromise`函數時我們將其放在一邊,即promise進入微任務佇列,其他後面的程式(`console.log('second')`)照常執行,因此`second `被輸出,`firstFunction`函數到此執行完畢,執行序中任務佇列被清空,此時開始執行微任務佇列中的任務,`I have resolved`被輸出。
3273+
3274+
`secondFunction`函數中,我們通過`await`關鍵字,暫停了後面程式的執行,直到異步函數的值被解析才開始後面程式的執行。這意味著,它會等著直到 `myPromise` 以值`I have resolved``resolve`之後,下一行`second`才開始執行。
3275+
3276+
32343277
</p>
32353278
</details>
32363279

0 commit comments

Comments
 (0)