Я считаю, что это будет работать:
client.get("global:nextPostId", function (err, reply) {
console.log("Number of posts: " + reply.toString());
})
Вызов AJAX является асинхронным, поэтому он не имеет возвращаемого значения. Вместо этого вы должны использовать функцию обратного вызова, и только там у вас есть значение, возвращаемоесерверный метод.
Редактировать: чтобы присвоить возвращаемое значение глобальной переменной, сначала объявите глобальную переменную:
var _numOfPosts = "";
Затем:
client.get("global:nextPostId", function (err, reply) {
_numOfPosts = reply.toString());
})
Однако значение не будетдоступно до завершения вызова AJAX, поэтому ваш исходный код не может работать.Нет прямого возвращаемого значения для хранения.
Вы можете установить таймер на некоторое разумное время отклика, а затем добавить код с использованием глобальной переменной.
Редактировать II: для вызоваметод снова, как только он будет завершен, получите такой код:
var _nextPostCallCount = 0;
function GetNextPost() {
//debug
console.log("GetNextPost called already " + _nextPostCallCount + " times");
//sanity check:
if (_nextPostCallCount > 1000) {
console.log("too many times, aborting");
return;
}
//invoke method:
client.get("global:nextPostId", function(err, replies) {
numberPosts = parseInt(replies.toString(), 10);
console.log("num of replies #" + (_nextPostCallCount + 1) + ": " + numberPosts);
//stop condition here.... for example if replies are 0
if (!isNaN(numberPosts) && numberPosts > 0)
GetNextPost();
});
//add to counter:
_nextPostCallCount++;
}
GetNextPost();
Это будет вызывать метод снова и снова, пока результат не станет равным 0 или вы не укажете какой-либо жестко заданный предел для предотвращения бесконечного цикла.