簡體   English   中英

如何根據另一個 promise 解決或拒絕 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM