Я уже некоторое время играю с javascript / node и redis, и я пытаюсь понять обратные вызовы, обещания и как вообще работать с redis с использованием node.Очень весело.
Мой код:
var redis = require('redis')
let client = ''
InitializeRedis()
DoLoop()
function InitializeRedis() {
client = redis.createClient()
client.on('ready', () => console.log(Date() + ' - connected'))
client.on('end', () => console.log(Date() + ' - end'))
}
function DoStuff(val) {
return new Promise((resolve, reject) => {
client.sadd('EventList', 'EventID:' + val, (err,res) => {
if(res == 1) { resolve('Ok') } else { reject('notOk') }
})
})
}
function DoLoop() {
for(let counter = 0; counter <= 10; counter++) {
DoStuff(counter)
.then((err) => addEventID(counter).then())
.catch(err => addEventID(counter))
}
}
function addEventID(counter) {
return new Promise((resolve, reject) => {
client.hmset('EventID:'+counter, 'field','value', (err, res) => { console.log( err, res); resolve() })
})
}
Я пытаюсь определить следующее действие / вызов redis по первому ответу.если SADD возвращает 1, тогда добавьте новый хеш, а когда 0, выполните другое действие.Это то, что должно быть довольно простым.Вероятно, я просто что-то упускаю:)
Когда я смотрю на экран монитора Redis, я вижу:
1536686206.472510 [0 127.0.0.1:59218] "sadd" "EventList" "EventID:0"
1536686206.472571 [0 127.0.0.1:59218] "sadd" "EventList" "EventID:1"
1536686206.472603 [0 127.0.0.1:59218] "sadd" "EventList" "EventID:2"
1536686206.472635 [0 127.0.0.1:59218] "sadd" "EventList" "EventID:3"
1536686206.472672 [0 127.0.0.1:59218] "sadd" "EventList" "EventID:4"
1536686206.472678 [0 127.0.0.1:59218] "sadd" "EventList" "EventID:5"
1536686206.472707 [0 127.0.0.1:59218] "sadd" "EventList" "EventID:6"
1536686206.472736 [0 127.0.0.1:59218] "sadd" "EventList" "EventID:7"
1536686206.472745 [0 127.0.0.1:59218] "sadd" "EventList" "EventID:8"
1536686206.472770 [0 127.0.0.1:59218] "sadd" "EventList" "EventID:9"
1536686206.472796 [0 127.0.0.1:59218] "sadd" "EventList" "EventID:10"
1536686206.474576 [0 127.0.0.1:59218] "hmset" "EventID:0" "field" "value"
1536686206.474633 [0 127.0.0.1:59218] "hmset" "EventID:1" "field" "value"
1536686206.474645 [0 127.0.0.1:59218] "hmset" "EventID:2" "field" "value"
1536686206.474651 [0 127.0.0.1:59218] "hmset" "EventID:3" "field" "value"
1536686206.474689 [0 127.0.0.1:59218] "hmset" "EventID:4" "field" "value"
1536686206.474700 [0 127.0.0.1:59218] "hmset" "EventID:5" "field" "value"
1536686206.474735 [0 127.0.0.1:59218] "hmset" "EventID:6" "field" "value"
1536686206.474742 [0 127.0.0.1:59218] "hmset" "EventID:7" "field" "value"
1536686206.474774 [0 127.0.0.1:59218] "hmset" "EventID:8" "field" "value"
1536686206.474782 [0 127.0.0.1:59218] "hmset" "EventID:9" "field" "value"
1536686206.474814 [0 127.0.0.1:59218] "hmset" "EventID:10" "field" "value"
Я ожидаю увидеть SADD -> HMSET -> SADD -> HMSET ..
Я не понимаю, почему они все SADD и все HMSET.Это первый вопрос .. почему это так?
Вторые вопросы, и для меня загадка ... когда использовать client.quit () .. когда он не используется, код зависает навсегда, так какон ждет нового ввода / запроса или выхода ... и когда я завершаю работу, HMSET сообщает, что соединение уже разорвано.
Как правильно использовать метод client.quit () ..
4 дня у него с обратными вызовами.Я думаю, что теперь я понимаю, но .. применяя это к node_redis ..
Спасибо!