![](/img/trans.png)
[英]How to resolve or reject a promise from the result of another promise?
[英]How can I resolve or reject a promise based on a another promise?
function process () {
return new Promise((resolve, reject) => {
//make sure module exists
let module = modules[queueData.module];
if (!module) reject('module not found: '+queueData.module);
//make sure processor exists
let processor = fileProcessors[module.type];
if (!processor) reject('processor not found: '+module.type);
return anotherPromiseFunction();
})
}
processFile().catch(e => console.error)
anotherPromiseFunction() 返回一個 promise。通常在 a.then() 中我可以返回一個 promise 讓 then() 等待 promise 完成,但是在創建 promise 時我該怎么做?
我應該這樣做嗎:
anotherPromiseFunction()
.then(e=>resolve(e))
.catch(e=>reject(e))
好像不對啊...
您可能不需要new Promise
。 “模塊存在”和“處理器存在”的情況可以單獨處理,然后您可以在它們之后將調用返回到anotherPromiseFunction
:
//make sure module exists
let module = modules[queueData.module];
if (!module) {
return Promise.reject(new Error('module not found: '+queueData.module));
}
//make sure processor exists
let processor = fileProcessors[module.type];
if (!processor) {
return Promise.reject(new Error('processor not found: '+module.type));
}
return anotherPromiseFunction();
如果封閉的 function 是異步的 function,您可以直接拋出錯誤:
async function run() {
//make sure module exists
let module = modules[queueData.module];
if (!module) {
throw new Error('module not found: '+queueData.module);
}
//make sure processor exists
let processor = fileProcessors[module.type];
if (!processor) {
throw new Error('processor not found: '+module.type);
}
return anotherPromiseFunction();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.