Проблема в том, что вы пишете асинхронный код.
Когда вы вызываете getJSON
, внутренняя функция не будет вызываться, пока getJSON
не вернет что-то. Это означает, что код больше не выполняется сверху вниз, ваша программа продолжает выполнение, даже когда getJSON
все еще получает данные.
Вы должны предоставить callback
вместо return
:
var fetchEvents = function (start, end, callback) {
$j.getJSON("index.php?start="+start+"&end="+end, function (data) {
callback(data);
});
};
// Now you can use fetchEvents which will be asynchronous too
fetchEvents(0, 10, function (data) {
console.log(data);
})
Вы можете упростить событие fetchEvents
, передав callback
непосредственно в getJSON
.
var fetchEvents = function (start, end, callback) {
$j.getJSON("index.php?start="+start+"&end="+end, callback);
};
PD: я упростил запрос на удобочитаемость.