簡體   English   中英

從另一個 function javascript 調用異步 function 時變得未定義

[英]Getting undefined when calling an async function from another function javascript

對於這個項目,我使用的是 wretch,它是 fetch 的包裝器

這是我的代碼的一個突破:

我對單獨的服務文件進行了可憐的調用,以將渲染功能與可憐的功能分開。

我要出口

export const wretchFunc = var => {
  return wretch(url)
    .json({
      var,
    })
    .get()
    .json()
};

問題出在第二個文件上:函數 2 呈現了這個可憐的 function 的結果,我確實解決了 promise 並且我得到了我想要的結果,但是當我從函數 1 調用它時,即使放置了一個控制台,返回值也是未定義的。在 function2 中登錄給了我正在尋找的 boolean。

我有一個 function1 返回:

return (function2 || function3)

並且 function2 呈現 wretchFunc 的結果,如下所示:

function function2(state) {
  const var = fun(state);
  if (!var) {
    return false;
  }
  wretchFunc(var).then(json => {
    return JSON.parse(json).isTrue;
  });
}

我的假設是 function 在收到 function2 的結果之前執行,但我不知道該怎么做。

編輯:我試着做:

 return wretchFunc(var).then(json => {
    return JSON.parse(json).isTrue;
  });
}

這給了我另一個 promise,我可以在上面的 function 上解決它,但是由於我有一個先前的條件 if(.var) 返回 false,這會使 function 返回不同的東西。 有沒有一種方法可以將 promise 的值轉換為 function2 並強制 function1 等待其結果。

謝謝

嘗試包裝成新的 Promise 並返回它

function function2(state) {
  return new Promise((res, rej) => {
    const var = fun(state);
    if (!var)
      res(false);
    wretchFunc(var)
    .then(json => resolve(JSON.parse(json).isTrue)
    .catch(err) => rej(err));
  })
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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