如何實作jQuery 中的 callback function
今天剛好有做到, 紀錄一下作法:
$T.query("{{keyword}}", function(query_results){
// do something...
});
然後在$T 的singleton 中, 定義一個query() 函式, 大致上寫法如下:
....
query: function(keyword, callback) {
q_url=$T.request_uri + '?' + $T.encodeQueryData({
'mkt': 'tw',
'Partner': $T.partner_pm,
'outputCharEnc': $T.outputCharEnc,
'maxCount': $T.maxCount,
'Keywords': keyword,
'rnd': Math.random() + Date.parse(new Date()),
'serveUrl': $T.ServeUrl
});
$T.callback = callback;
$T.createScript(q_url);
$T.interval = setInterval("$T.wait_yahoo_ads()", 500);
},
然後定義一個 wait_yahoo_ads() 函式, 裡面會去check $T 是否有定義callback, 有則執行
wait_yahoo_ads: function() {
if(zSr !== undefined) {
clearInterval($T.interval);
$T.interval = undefined;
if ($T.callback) {
var query_results = $T.parse_yahoo_ads(zSr);
$T.callback(query_results);
}
//$T.show_yahoo_ads(zSr);
}
}
$T.query("{{keyword}}", function(query_results){
// do something...
});
然後在$T 的singleton 中, 定義一個query() 函式, 大致上寫法如下:
....
query: function(keyword, callback) {
q_url=$T.request_uri + '?' + $T.encodeQueryData({
'mkt': 'tw',
'Partner': $T.partner_pm,
'outputCharEnc': $T.outputCharEnc,
'maxCount': $T.maxCount,
'Keywords': keyword,
'rnd': Math.random() + Date.parse(new Date()),
'serveUrl': $T.ServeUrl
});
$T.callback = callback;
$T.createScript(q_url);
$T.interval = setInterval("$T.wait_yahoo_ads()", 500);
},
然後定義一個 wait_yahoo_ads() 函式, 裡面會去check $T 是否有定義callback, 有則執行
wait_yahoo_ads: function() {
if(zSr !== undefined) {
clearInterval($T.interval);
$T.interval = undefined;
if ($T.callback) {
var query_results = $T.parse_yahoo_ads(zSr);
$T.callback(query_results);
}
//$T.show_yahoo_ads(zSr);
}
}
留言
張貼留言