get_each_total(function () { alert("success")});
здесь у вас есть function (){ alert ....
, который возвращает объект функции
get_each_total(alert("success"));
здесь alert("success")
- это объект любого типа, возвращаемый alert()
, и это не функция.
Редактировать: - в ответ на комментарий я собираюсь уточнить.
когда браузер видит
do_something(is_it_complete(arg1, arg2));
, он проходит через следующеешаги:
- Получите функцию
is_it_complete
и назовите ее аргументами arg1
и arg2
. - получите функцию
do_something
и вызовите ее с результатом вышеописанногов качестве аргумента.
Когда браузер видит:
do_something(function () { is_it_complete(arg1, arg2) });
, он делает:
- Создает объект функции, который вызывает
is_it_complete(arg1, arg2)
- Получите функцию
do_something
и вызовите ее с указанным выше объектом в качестве аргумента.
Edit 3: - Хорошо, поэтому в первом из них она вызвала предупреждениеперед запуском вашего кода, чтобы он казался работающим.
у вас есть:
get_each_total = function(callback) {
// ... *snip*
return requests.push($.getJSON(url, function(data) {}));
return $.when.apply($, requests).then(function() {
// ... *snip*
});
};
второе возвращение никогда не достигается.
Редактировать: - думал, что ядобавив несколько советов после прочтения кода:
var requests;
requests = [];
является избыточным, измените этот стиль на
var requests = [];
var url = " ....";
Когда вы не передаете какие-либо аргументы обратному вызову, не переносите его.
.then(function(){ callback();})
это то же самое, что и:
.then(callback);
и, как указано в комментариях, ваш URL
url = "http://otter.topsy.com/hjhkl/sehjkhhkjhkarch.js?callback=?&apikey=38A260E9D12A4908B1AF9184B691131&q=justin+bieber&window=d";
должно быть
url = "http://otter.topsy.com/hjhkl/sehjkhhkjhkarch.js?callback=somevalue&apikey=38A260E9D12A4908B1AF9184B691131&q=justin+bieber&window=d";
или даже:
url = "http://otter.topsy.com/hjhkl/sehjkhhkjhkarch.js"
$.getJSON(url, {
"callback": "somevalue",
"apikey": "38A260E9D12A4908B1AF9184B691131",
"q": "justin bieber",
"window": "d"
}, function(data){ alert("Got: " + data);});