带有异步等待es6函数的变量上未定义

问题描述 投票:0回答:1

不知道为什么我总是对propertyAnagrams变量保持不确定,将不胜感激!

const anagramica = require('anagramica');

const processBody = async (generatedString, arrayOfWords) => {
  const possibleAnagrams = await anagramica.all(generatedString, (err, response) => {
    if (err) {
      console.log(`Could not find possible anagrams : ${err}`);
    }
    else {
      console.log("1", response.all);
      /// [ Array ] ///
      const array = response.all;
      console.log("2", array);
      /// [ Array ] ///
      return array;
    }
  })
  console.log("3", possibleAnagrams)
  /// undefined ///

  return { possibleAnagrams, arrayOfWords }
}
javascript async-await es6-promise
1个回答
1
投票

anagramica似乎没有返回承诺。如果您想使用异步/等待,请考虑将其转换为Promise。

const anagramica = require('anagramica');

const anagramicaPromise = generatedString => new Promise((res, rej) => {
  anagramica.all(generatedString, (err, response) => {
    if (err) {
      return rej(err);
    }
    res(response);
  }
});

const processBody = async (generatedString, arrayOfWords) => {
  try {
    const possibleAnagrams = await anagramicaPromise(generatedString);
    console.log("3", possibleAnagrams);
    return { possibleAnagrams, arrayOfWords }
  } catch(err) {
    console.log(`Could not find possible anagrams : ${err}`);
  }
}

0
投票

与@Nick相同,但使用es6-promisify模块:

es6-promisify
© www.soinside.com 2019 - 2024. All rights reserved.