我有jQuery函数:回调带参数
$('#fetch').click(function() {
...
GetPage(curPage, items, DrawItemSet(items))
});
正如你所看到的,我想在回调函数DrawItemSet从内GETPAGE功能来执行。有时,我需要调用DrawItemSet但其他一些功能..我只是想要从GetPage功能我需要调用的任何功能。之后(正如你可能猜到的),我需要做一些事后工作。在这个例子中,我想显示一些数据。在其他情况下,我不想显示一些文本,但是,例如,从GetPage函数得到的交换信息。在这种情况下,我的想法是写下类似的东西:
...
GetPage(curPage, items, SwapItemSet(oldItems))
就像现在,一切似乎都没问题。
这里是我的GETPAGE上市:
function GetPage(pageNum, collection, callback) {
console.log('Starting to get page number ' + pageNum)
$.ajax({
url: 'http://www.xxxxxxxxxxx.php?page=' + pageNum,
type: 'get',
dataType: '',
success: function(data) {
...
console.log('Curpage=' + curPage + ' MaxPage=' + maxPages)
if(curPage < maxPages) {
curPage = curPage + 1
GetPage(curPage, collection, callback)
}
else {
console.log('passed')
callback()
}
}
});
}
正如你可以看到这个函数调用自身,同时也有一些网页留下来获取的,如果没有离开页面,回调函数应该被称为做一些东西。回调例如,你可以看到下面(只是用于测试):
function DrawItemSet() {
console.log('DrawItemSet called.')
...
}
我的问题是,在理论上一切正常,我应该在控制台DrawItemSet作为最后消息意味着回调函数是获得在抓取完成后调用。嗯..而不是它,我得到如下:
DrawItemSet called.
Starting to get page number 1
Curpage=1 MaxPage=2
Starting to get page number 2
Curpage=2 MaxPage=2
passed
,这意味着在某种程度上回调正在执行第一功能。
怎么这么?!
非常感谢!我现在将使用第一个变体。 – Astro
不客气@Astro – Paulpro