觀察者模式
發布&訂閱
一對多
示例:點好咖啡之后坐等被叫
傳統 UML 類圖

javascript 中的 UML 類圖

應用場景
網頁事件系結
<button id="btn1"></button>
<script>
$("#btn1").click(function() {
console.log(1);
});
$("#btn1").click(function() {
console.log(2);
});
$("#btn1").click(function() {
console.log(3);
});
</script>
promise
function loadImg(src) {
var promise = new Promise(function(reslove, reject) {
var img = document.creatElement("img");
img.onload = function() {
reslove(img);
};
img.src = https://www.cnblogs.com/ygjzs/p/src;
});
return promise;
}
var src = ".....";
var result = loadImg(src);
result
.then(function(img) {
console.log("img.width", img.width);
return img;
})
.then(function(img) {
console.log("img.height", img.height);
})
.catch(function(ex) {
console.log(ex);
});
jQuery callback
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<p>jQuery callbacks</p>
<script src=https://www.cnblogs.com/ygjzs/p/"https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
<script>
var callbacks = $.Callbacks(); // 注意大小寫
callbacks.add(function(info) {
console.log("fn1", info);
});
callbacks.add(function(info) {
console.log("fn2", info);
});
callbacks.add(function(info) {
console.log("fn3", info);
});
callbacks.fire("gogogo");
callbacks.fire("fire");
</script>
