Необходимо переписать места c callback в api на промисы.
const api = {
a: {
b: {
c: callback => setTimeout(() => callback(null, ’hello’), 100)
}
},
aa: {
bb: (callback, x, y) => setTimeout(() => callback(null, x + y), 200)
}
};
const promisedApi = promisify(api);
promisedApi.a.b.c()
.then(res => console.log(res)); // => ’hello’
У меня получилось так:
function promisify (api) {
const promisedApi = {}
for (const prop in api) {
if (typeof (api[prop]) === 'function') {
promisedApi[prop] = new Promise((resolve, reject) => {
api[prop]((err, script) => {
if (err) reject(err)
else resolve(script)
})
})
} else if (Object.keys(api[prop]).length > 0) {
promisedApi[prop] = promisify(api[prop])
} else {
promisedApi[prop] = api[prop]
}
}
return promisedApi
};
Помогите найти ошибку