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

以加法为例,现有远程API的模拟实现 addRemote

const addRemote = async (a, b) => new Promise(resolve => {
  setTimeout(() => resolve(a + b), 1000)
})

请实现本地的add方法,调用addRemote,能最优的实现输入数字的加法。
async function add(...inputs) {

    let sum=0;
    for(var i=0;i<inputs.length;i++){
       sum= await addRemote(sum,inputs[i])
    }
    return sum;
}

请用示例验证运行结果:

add(1, 2)
  .then(result => {
    console.log(result) // 3
  })

add(3, 5, 2)
  .then(result => {
    console.log(result) // 10
  })

add方法实现

async function add(...inputs) {
  // 你的实现
}

nodejs utils.promisify 接受error first的回调函数为参数异步函数转换为可以返回promise的函数

// fs.loadFile 使用演示
fs.loadFile('./xxx/x.md', (err, data) => {
  if(err) {
    console.log(err)
  } else {
    console.log(data)
  }
})

promisify函数包装后演示

// fs.loadFile('./xxx.md').then(data => {}).catch(err => {})
const loadFile = utils.promisify(fs.loadFile);
loadFile('./xxxx.md').then(data => {}).catch(err => {});

请实现

    // 请实现
    utils.promisify = function (fn) {
        return function (path) {
            return new Promise((res, rej) => {
                fn(path, (err, data) => {
                    if (err) {
                        res(err);
                    } else {
                        res(data);
                    }
                })
            })
        }
    };```
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容