繁体   English   中英

Javascript Promise,嵌套函数

[英]Javascript promise, nested functions

我的问题是,我正在运行node.js,并且我有2个功能需要按特定顺序运行,但是在此情况下它们没有返回承诺。 因此,我想知道如何重写该代码以确保主函数将返回一个Promise,并且如果我具有嵌套函数,我是否只运行第一个函数解析的第二个函数?

这是代码:

handleMd5Convert = (file) => {
  fs.readFile(file, (err, buf) => {
    fs.rename(file, directoryPath + md5(buf) + '.mp3', (err) => {
      if (err) console.log('ERROR: ' + err);
    })
  })
})

HandleMd5Convert应该能够。 then()

/亚历克斯

您应该能够将整个内容包装在new Promise()并使用resolve()reject()处理成功和错误:

handleMd5Convert = (file) => {
  return new Promise((resolve, reject) => {
    fs.readFile(file, (err, buf) => {
      if (err) return reject(err)
      fs.rename(file, directoryPath + md5(buf) + '.mp3', (err) => {
        if (err) return reject(err);
        resolve()
      })
    })
  })
}

handleMd5Convert('test.txt')
.then(() => console.log("done"))
.catch(err => console.log("error:", err))

您可以像下面这样使用new Promise创建一个new Promise

var myPromise = function(resolve) {
    someAsyncMethod(param1, callback(x){
        resolve (x);
    });
}

这样, myPromise .then() 仅在您调用resolve()之后,诺言才会完成

myPromise.then(function(result){
    // Your code here...
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM