【问题标题】:How to convert levelDB read stream into sync method如何将levelDB读取流转换为同步方法
【发布时间】:2018-11-24 15:49:32
【问题描述】:
let temp = [];

db.createReadStream({ keys: true, values: false })
  .on('data', data => {

   temp.push(data);

  })
console.log(temp);

我正在尝试从 LevelDB 数据库中迭代出每个键并将数据发送回客户端,但 createReadStream 方法是异步的 所以客户端响应代码在完成对数据库的迭代之前就被触发了,我想知道是否有任何方法可以使它成为一个同步函数并且只有在一切都完成之后才触发响应..

【问题讨论】:

  • 我需要同样的...没有关于它的信息:(
  • @ch3ll0v3k javascript.info/async-await 阅读有关异步等待的信息,它应该可以解决它。

标签: javascript node.js asynchronous synchronization leveldb


【解决方案1】:

代码正在等待流完成,然后再将其发送回客户端。

import level from 'level'

const db = level('db', { valueEncoding: 'json' })

export async function CreateReadStream (option = {}) {
  let array = []
  try {    
    const readStream = db.createReadStream(option)
    for await (const data of readStream) {
      array.push(data)
    }

    return array
  } catch (error) {
    console.error(error)
  }
}

【讨论】:

    猜你喜欢
    • 2021-04-12
    • 2019-12-26
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    相关资源
    最近更新 更多