我尝试使用new Promise(resolve =〉...)来承诺(或利用async await特性)函数getId中的回调,但是由于使用了更高阶的函数getAddresses,我有点不知所措。我不擅长函数式编程。关于如何承诺这个函数,有什么建议吗?
const {queryRecord, getData} = require(“@xyzLib”);
const getId = (callback) => {
getData(“attr1”,”attr2”,getAddresses(callback));
}
const getAddresses = (callback) => (result) => {
if (!result.success) {
callback(new Error(‘Exception details’))
} else {
queryRecord(objectName, (result) => {
callback(null, result.name);
});
}
}
// invoking call
getId(async (error, zip, state) => {
if (error) {
console.log(error.message)
} else {
await fetch(encodeURI(settingsUrl), {
method: 'GET',
});
....
2条答案
按热度按时间46qrfjad1#
由于
getId()
接受一个回调作为最后一个参数,并且该回调使用nodejs调用约定,因此可以直接在getId
上使用util.promisify()
,如下所示:或者,如果您已经在
async
函式主体中:mnemlml82#
你应该在最低的可用级别上进行承诺,也就是说,从库中导入的函数。这样你就不需要这样的承诺了。
你可以简单地写