[英]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.