12月 24, 2019 Javascript
這裏講的 Promise 不是講的 "邦民" 的。而是講 Javascript 上的 Promise。

### 起源

自從 AJAX 技術興起後,異步的 Javascript 有了很多元化的發展,當然萬變不離其中也是使用 Callback 的方法來達成 ( 也即是 Observe Pattern 的簡化版 )。由 Async Waterfall 到現時 Promise 方法處理異步 Callback,當中經過了很多時間變化。

### 語法

現時 Promise 是一個 Javascript 的原生 Object (ES2015 後),用來處理 Javascript 異步的回傳。

```js
// create new promise
var promise1 = new Promise((resolve, reject) => {
	
	// your task here
	setTimeout(() => {
		
		// random condition
		if( Math.round(Math.random() * 10) > 5 ) {

			// success and callback data
			resolve('foo');
		} else {

			// failure and callback error
			reject(new Error('bar'));
		}
	}, 100);
});

// handle promise success
const success = data => console.log(data);

// handle promise failure
const failure = error => console.error(error);

// handle promise result
promise1.then(success, failure);
```

而當這個 Promise Object 建立的同時,自定義的功能已經在背後異步運行的了。運行完的結果可以透過使用 `resolve` 回傳出去。

我們則可以利用 `then` 功能把回傳成功的值接住。第一個參數是接著一個 function,用來處理成功時的結果,第二個參數也是接著一個 function,不過就用來接著失敗時的 error。

另外 Promise 不只是只有這些功能的,下面這個 Link 會有更多的功能介紹 !

https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Promise
過去文章
2025 (9)
4 (5)
3 (1)
2 (3)
2024 (25)
11 (3)
10 (3)
9 (1)
3 (18)
2022 (6)
10 (1)
6 (2)
5 (1)
3 (1)
1 (1)
2021 (21)
11 (7)
7 (1)
6 (2)
5 (2)
4 (6)
3 (2)
2 (1)
2020 (92)
12 (1)
11 (2)
10 (4)
9 (10)
8 (5)
7 (1)
6 (3)
5 (1)
4 (4)
3 (25)
2 (7)
1 (29)
2019 (57)
12 (25)
11 (7)
9 (25)