iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 22
0
Modern Web

網頁技術學習心得系列 第 22

Fetch & Promise 筆記六(Promise type)

  • 分享至 

  • xImage
  •  

Promise

在 clipboard 存取剪貼簿的 api 中,拿到的是一個 promise type 的值,所以也需要 .then 來解讀:

navigator.clipboard.readText().then( text => {
        console.log(text)
    })

const api500 = 'https://run.mocky.io/v3/74e65703-c9b2-4c4c-b36e-88d8cc6cd253'
const api200 = 'https://run.mocky.io/v3/d2381372-4e30-4ec6-8a03-c3573417112d'

const data = {
    name: 'rock070'
}
const request = fetch(api200, {
    method: "POST",
    body: JSON.stringify(data),
    headers: new Headers({
        'Content-Type': 'application/json'
    }),
})

request.then( res => {
              console.log(res)
              return res.json()
            })
       .catch(error => console.log('Error:', error))
       .then( response => console.log('Success:', response));

參考資料:clipboard 讀取剪貼簿文字 API - by MDN Web Docs

new Promise (實作 promise)

function init(resolve, reject) {
    resolve({
        init: "3",
        name: "rock070",
        location: 'Louisa'
    })
    reject('errorCode')
}
const myPromise = new Promise(init) 
// Promise 的引數要是一個 function

myPromise.then(res => console.log(res))
         .catch(err => console.log('err', err))

Promise 在 .then(), .catch() 兩者中只會執行一個,一但成功執行後,就不會更改狀態。

const myPromise = new Promise((resolve, reject) => {
    setTimeout( () => {
        resolve()
        reject()
    }, 3000)
})

myPromise.then(data => console.log('data', data))
         .catch(err => console.log('err', err))

設定 3 秒後 resolve!


上一篇
Fetch & Promise 筆記五(Fetch 的使用注意事項)
下一篇
Fetch & Promise 筆記七(Promise 加插使用、實作 XHR Promise)
系列文
網頁技術學習心得30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言