我正在尝试将一个loopback回调函数转换为promise,但我无法转换它。代码是
let ds = app.datasources.ace_db
ds.connector.execute(sql,[],(err, data ) => {
console.log('datalogger', data);
});
有没有任何方法可以将这种代码的平衡转换为承诺?
答案 0 :(得分:3)
您要做的是将ds.connector.execute
包裹在Promise
中,然后像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));
答案 1 :(得分:1)
let p = Promise.promisify(ds.connector.execute);
p(sql, []).then(...)