以加法为例,现有远程API的模拟实现 addRemote
代码语言:javascript复制const addRemote = async (a, b) => new Promise(resolve => {
setTimeout(() => resolve(a b), 1000)
})
请实现本地的add方法,调用addRemote,能最优的实现输入数字的加法。 async function add(...inputs) {
代码语言:javascript复制 let sum=0;
for(var i=0;i<inputs.length;i ){
sum= await addRemote(sum,inputs[i])
}
return sum;
}
请用示例验证运行结果:
代码语言:javascript复制add(1, 2)
.then(result => {
console.log(result) // 3
})
add(3, 5, 2)
.then(result => {
console.log(result) // 10
})
add方法实现
代码语言:javascript复制async function add(...inputs) {
// 你的实现
}
nodejs utils.promisify 接受error first的回调函数为参数异步函数转换为可以返回promise的函数
代码语言:javascript复制// fs.loadFile 使用演示
fs.loadFile('./xxx/x.md', (err, data) => {
if(err) {
console.log(err)
} else {
console.log(data)
}
})
promisify函数包装后演示
代码语言:javascript复制// fs.loadFile('./xxx.md').then(data => {}).catch(err => {})
const loadFile = utils.promisify(fs.loadFile);
loadFile('./xxxx.md').then(data => {}).catch(err => {});
请实现
代码语言:javascript复制 // 请实现
utils.promisify = function (fn) {
return function (path) {
return new Promise((res, rej) => {
fn(path, (err, data) => {
if (err) {
res(err);
} else {
res(data);
}
})
})
}
};```