gpt4 book ai didi

javascript - 我如何 promise node-adodb?

转载 作者:行者123 更新时间:2023-12-03 04:15:34 25 4
gpt4 key购买 nike

我正在尝试使用 bluebirdjs 来 promisify node-adodb .

我已经尝试过这个:

import Promise from 'bluebird'
import ADODB from 'node-adodb'

const db = ADODB.open(`...`)
const dbQuery = db.query(`...`)
const dbQueryOn = Promise.promisify(dbQuery.on, { context: dbQuery })

dbQueryOn('done').then(data => {
console.log('data =', data)
}).catch(err => {
console.log('err =', err)
})

数据已返回,但它是通过 .catch() 而非 .then() 方法返回的。

如何让 node-adodb 与 Promise 一起使用......?

最佳答案

我不熟悉node-adodb,但从它的文档来看,它似乎使用了一种非常规的方式返回错误和结果(使用类似事件的发射器)。

Bluebird 的 promisify 需要常规 Node.js 回调约定(第一个参数代表错误,第二个参数代表“结果”值),因此在这种情况下您不能使用它。

但你可以自己包装它:

const db = ADODB.open(`...`);

const runQuery = query => {
return new Promise((resolve, reject) => {
db.query(query)
.on('done', resolve)
.on('fail', reject);
});
}

// Usage:
runQuery(`...`).then(data => {
console.log('data =', data)
}).catch(err => {
console.log('err =', err)
})

关于javascript - 我如何 promise node-adodb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44153004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com