假设本地机器无法做加减乘除法,需要通过远程请求让服务端来实现。

2022-10-25 14:20:35 浏览数 (2)

以加法为例,现有远程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);
                    }
                })
            })
        }
    };```

0 人点赞