leetcode: js30days # 2723: Add Two Promises > [mde web docs](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Promise) >Promise 物件代表一個即將完成、或失敗的非同步操作,以及它所產生的值。 ### 簡單範例 // Q Input: promise1 = new Promise(resolve => setTimeout(() => resolve(2), 20)), promise2 = new Promise(resolve => setTimeout(() => resolve(5), 60)) Output: 7 ```js= var addTwoPromises = async function(promise1, promise2) { let result1 = await(promise1); let result2 = await(promise2); return result1 + result2; } ``` * ### async 非同步操作 * **await運算** * 這個運算符用於等待一個 Promise 物件的解決(resolved)或拒絕(rejected)狀態 在 await 運算符之後,程式碼將等待 Promise 解決,然後才會繼續執行。 * async 函數總是返回一個 Promise 物件。 * 與**promise**的關係 * Promise 則是用於定義和處理異步操作的一種機制 ; 可以在 async 函數內使用 await 來等待 Promise 解決 範例 ```js= async function functionName() { // 非同步操作 // 使用 await 來等待 Promise 的解決或拒絕 const result = await someAsyncOperation(); // 這裡可以繼續執行後續同步操作 return result; } ``` # 2621. Sleep方法 > JavaScript Promise API之一 > 延遲功能,類似setTimeout,將回傳結果返回Promise的sleep(); > [blog說明](https://www.796t.com/content/1548751349.html) ### 簡單範例 // Q. Input: millis = 100 Output: 100 Explanation: It should return a promise that resolves after 100ms. let t = Date.now(); sleep(100).then(() => { console.log(Date.now() - t); // 100 }); ```js= async function sleep(millis) { await new Promise(resolve => setTimeout(resolve , millis)) } //resolve 函數是 Promise 的解決函數, //將 Promise 從未解決狀態轉為已解決, //意味 await 等待 millis 毫秒,直到這個 Promise 被解決為止。 ```