将回调转换为承诺
Convert call back to promise
我正在尝试将一个环回回调函数转换为 promise,但我无法转换它。代码为
let ds = app.datasources.ace_db
ds.connector.execute(sql,[],(err, data ) => {
console.log('datalogger', data);
});
有什么方法可以将这段代码转换为 promise 吗?
你想要做的是将 ds.connector.execute
包裹在 Promise
中,然后将 return 包裹在 Promise
中,如下所示:
const dsConnectorPromise = function(sql, arr) {
let p = new Promise((resolve, reject) => {
ds.connector.execute(sql, arr, (err, data) => {
if(err) reject(err);
else resolve(data);
});
});
return p; // return promise
};
然后您可以像这样继续使用 dsConnectorPromise
:
dsConnectorPromise(sql, []).then(data => {
console.log(data);
}).catch(err => console.log(err));
你可以做一个Promise.promisify()
let p = Promise.promisify(ds.connector.execute);
p(sql, []).then(...)
我正在尝试将一个环回回调函数转换为 promise,但我无法转换它。代码为
let ds = app.datasources.ace_db
ds.connector.execute(sql,[],(err, data ) => {
console.log('datalogger', data);
});
有什么方法可以将这段代码转换为 promise 吗?
你想要做的是将 ds.connector.execute
包裹在 Promise
中,然后将 return 包裹在 Promise
中,如下所示:
const dsConnectorPromise = function(sql, arr) {
let p = new Promise((resolve, reject) => {
ds.connector.execute(sql, arr, (err, data) => {
if(err) reject(err);
else resolve(data);
});
});
return p; // return promise
};
然后您可以像这样继续使用 dsConnectorPromise
:
dsConnectorPromise(sql, []).then(data => {
console.log(data);
}).catch(err => console.log(err));
你可以做一个Promise.promisify()
let p = Promise.promisify(ds.connector.execute);
p(sql, []).then(...)