콜백 및 이벤트에 대해 머리를 감싸려고합니다. 각각과 관련된 두 가지 공통 패턴이 있습니다. 어느 것이 모범 사례로 간주되며, 그 이유는 무엇입니까? 다음jQuery에서 콜백 패턴과 옵저버 패턴이 주어지면 어떤 패턴이 선호됩니까?
$(function() {
console.log('Document ready');
getData();
})
function getData(){
var url = "http://ip.jsontest.com/";
$.ajax({
dataType: "json",
url: url,
success: function(data){
buildElements(data, writeData)
}
});
}
function buildElements(data, callback) {
$('div.foo').append("<div class='bar'></div>");
callback(data);
}
function writeData(data){
$('div.bar').append('<p>Your IP is ' + data.ip + '</p>');
}
와 event-oriented piece of code을 (관찰자 패턴 다음)은 다음과 같습니다 :
$(function() {
console.log('Document ready');
getData();
})
function getData(){
var url = "http://ip.jsontest.com/";
$.ajax({
dataType: "json",
url: url,
success: function(data){
$('div.foo').trigger('getDataDone', data);
}
});
}
//build elements
$('div.foo').on('getDataDone', function(event, data) {
$('div.foo').append("<div class='bar'></div>")
$('div.foo').trigger('elementsBuilt', data);
})
//write data
$('div.foo').on('elementsBuilt', function(event, data) {
$('div.bar').append('<p>Your IP is ' + data.ip + '</p>');
})
디커플링의 경우 콜백 인수와 이벤트가 트리거되는 요소도 지정해야합니다. – Bergi