Я пытаюсь составить список URL-адресов с помощью node_redis. В приведенном ниже коде я получаю длину в отсортированном наборе и добавляю элементы к этой позиции набора.Node.js с Redis - добавление добавленных наборов
client.on('connect', function() {
client.zcard('url',function(err, reply) {
if (reply == undefined) {
length = 0;
} else {
length = reply;
}
});
client.zadd('url',length,pagename,function(err1, reply1) {
console.log("added="+reply1);
});
client.zrange('url',0,-1,'withscores',function(err2, reply2) {
console.log(reply2);
});
});
Моя проблема заключается в том, что reply1
возвращает неопределенное значение, которое означает, что length
не назначается длиной установленного в предыдущем фрагменте коды. Что я здесь делаю неправильно?
Это, вероятно, будет, потому что призыв к 'zcard' еще вернуться, когда вы звоните' zadd' - попробуйте подвигать '' zadd'inside обратного вызова zcard' (и затем сделать то же самое для 'zrange') –
Вы вызываете код одновременно - и порядок завершения не гарантируется. Но похоже, что вы хотите - это последовательное выполнение (сначала, затем второй, затем третий). Используйте 'async.waterfall' из модуля' async' или просто обратный вызов цепи, чтобы каждая следующая функция выполнялась в предыдущем обратном вызове функции. – Meredian