используя результат запроса базы данных в node.js

Я не уверен, как должна выглядеть функция обратного вызова, если я хочу это сделать. Обе функции находятся в классе, и я действительно хочу его отвлечь.

doesexist: function(setvalue) {
  redisclient.sismember('setname', setvaue, callbackfuntion(value));
}

someothermethod: function() {
  if (doesexist()){
   //doSomething
  }
}

Как мне это сделать в асинхронной среде?

<Сильный> UPDATE:

Теперь я попробовал это (coffeescript):

deoesexist: (setvalue, cb) ->
  @r.sismember 'setname', setvalue, (err, res) -> cb(res)

someothermethod: (setvalue) ->
  @doesexist setvalue, (exists) =>
    unless exists
      # emit an event that calls a function
      # that probably adds the not existing value.
      # I just don't want to redo this. That's
      # what this function is all about

Кажется, это очень хорошо работает.

0
nl ja de
Взгляните на мой ответ ранее , в котором рассматривается аналогичный запрос База данных WebSQL (в Chrome). Обратите внимание, в частности, на рекурсивные вызовы populate , когда я DROP ing и CREATE ing, прежде чем я зациклирую INSERT s , Если вы хотите запустить этот скрипт, единственный способ, которым я мог бы пройти мимо ошибки безопасности в jsFiddle, - это запустить его локально, а также сохранить его на рабочем столе.
добавлено автор Jared Farrish, источник
Так вы это поняли? Я собирался опубликовать ответ о том, что вы на самом деле после этого, а это отложенное обещание для вашего запроса. См. этот вопрос , этот < a href = "http://howtonode.org/promises" rel = "nofollow noreferrer"> node.js сфокусированное объяснение , node.js Q (посмотрите здесь для примера примера CoffeeScript) и узел/обещание motherload . Ничего.
добавлено автор Jared Farrish, источник

2 ответы

Я понял. Один в основном заменяет оператор if функцией обратного вызова. Простой, если вы думаете более высокий уровень о том, что вы на самом деле делаете, но трудно, когда вы просто не привыкли к нему.

См. Мое обновление для ответа.

0
добавлено

You should checkout out control flow libraries, https://npmjs.org/browse/keyword/flow, to determine which approach is best for you, I prefer the async library https://github.com/caolan/async

Чтобы ответить на ваш вопрос, вы должны решить свою проблему следующим образом;

doesexist: function(setvalue, callback) {
    redisclient.sismember('setname', setvaue, callback);
}

someothermethod: function(somevalue) {
   doesexist(somevalue, function(err, exists) {
         if (exists) {
           //doSomething
         }
   })
}

Надеюсь, это поможет!

сойка

0
добавлено
Да, я посмотрел на библиотеки, но действительно ли они делают этот пример проще? Мне нравятся функции async, но я думаю, что они не нужны для того, что я здесь делаю, или просто не могу понять правильную функцию. Я посмотрел на асинхронный. Какую функцию вы бы использовали для моей проблемы?
добавлено автор user1680104, источник
Вы правильно асинхронны, и другие библиотеки управления потоками действительно полезны, когда у вас более одного вложенного обратного вызова. В этом случае его проще и эффективнее сделать это, как описано выше. Я упомянул их для справки, когда вы попадаете в более сложные ситуации.
добавлено автор Jason Brumwell, источник
JavaScript Jobs — чат
JavaScript Jobs — чат
8 336 участник(ов)

JavaScript Jobs — чат для поиска работы и людей Правила оформления: https://teletype.in/@telegram-ru/r1WQe5F1m См. также: @mobile_jobs, @devops_jobs, @nodejs_jobs, @react_js, @angular_ru, @js_ru

JavaScript.ru
JavaScript.ru
7 932 участник(ов)

Сообщество сайта JavaScript.ru в Slack.

pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

Node.js — русскоговорящее сообщество
Node.js — русскоговорящее сообщество
4 160 участник(ов)

Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было комфортным. Правила: https://rudevs.network/ByaMH6un7 См. также: @js_ru, @react_js, @angular_ru, @vuejs_ru, @devops_ru Вакансии и поиск работы: @javascript_jobs и @nodejs_jobs

JavaScript — русскоговорящее сообщество
JavaScript — русскоговорящее сообщество
3 269 участник(ов)

Рекомендуем сразу отключить уведомления Правила: https://rudevs.network/ByaMH6un7 См. также: @js_noobs_ru, @nodejs_ru, @typescript_ru, @react_js, @electron_ru Вакансии и поиск работы: @javascript_jobs

JavaScript Noobs — сообщество новичков
JavaScript Noobs — сообщество новичков
2 484 участник(ов)

Чат для новичков

javascript_ru
javascript_ru
915 участник(ов)

Сообщество любителей самого популярного языка программирования в мире. Чат основан в 2009 году. Логи: https://goo.gl/9EOeM7 Поддержка бота: @chat_linker (ссылка на репу внутри) Вам будут интересны @frontend_ru и @css_ru

jsChat
jsChat
603 участник(ов)

Чат посвященный программированию на языке javaScript Перед отправкой ссылки на Ваш контент посоветуйтесь с админом Все ссылки удаляются ботом автоматически

JavaScript for Zombies Chat
JavaScript for Zombies Chat
492 участник(ов)

Чат про JavaScript для настоящих zombie! Вход строго по приглашениям! Ссылка для строгих приглашений: https://t.me/joinchat/AAMBHz3Uyr0tuZ7VaB029g

All That JS
All That JS
417 участник(ов)

JS на русском

Node: русскоязычное сообщество
Node: русскоязычное сообщество
28 участник(ов)

Независимое сообщество node разработчиков на русском языке. Правила: https://node-chat.ru/ Партнеры: @react_ru @ru_vuejs @nuxtjs_ru @ru_docker @nlp_ru