第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

調用函數總是返回未定義的,但 console.log 是正確的

調用函數總是返回未定義的,但 console.log 是正確的

HUH函數 2022-12-02 16:09:04
我有 2 個文件,包含名稱。我想從這兩個文件中隨機生成名稱組合。但是當我調用我的函數時,它 console.log() 的名稱正確,但未定義存儲在couple變量中。我當前的代碼如下所示:function getRandomLine(filename) {  fs.readFile(filename, function (err, data) {    if (err) throw err;    data += "";    var lines = data.split("\n");    line = lines[Math.floor(Math.random() * lines.length)];    console.log(line);    return line;  });}function generateRandomCouple(f1, f2) {  male = getRandomLine(f1);  female = getRandomLine(f2);  return male + " & " + female;}couple = generateRandomCouple("./maleNames.txt", "./femaleNames.txt");console.log(couple);我得到的輸出是:undefined & undefinedSamPenny另外,我仍然很困惑什么時候使用 something.then().catch() vs async/await vs 這種回調風格的代碼。有什么好的方法來考慮什么時候使用什么?編輯:如果我使用readFileSync,我會在控制臺上得到以下信息: undefined & undefined
查看完整描述

2 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

您期望callback函數在調用函數時執(zhí)行synchronously。


更新類似于下面的代碼


async function getRandomLine(filename) {

  return new Promise(function (resolve, reject) {

    fs.readFile(filename, function (err, data) {

      if (err) reject(err); // Reject in case of error

      data += "";

      var lines = data.split("\n");

      line = lines[Math.floor(Math.random() * lines.length)];

      console.log(line);

      resolve(line); // Resolve if success

    });

  });

}


async function generateRandomCouple(f1, f2) {

  male = await getRandomLine(f1);

  female = await getRandomLine(f2);

  return male + " & " + female;

}


(async function() {

  couple = await generateRandomCouple("./maleNames.txt", "./femaleNames.txt");

  console.log(couple);

})();


查看完整回答
反對 回復 2022-12-02
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

 fs.readFile異步運行。getRandomLine立即返回未定義。要使其按預期工作,您可能希望使用async-await. 是這樣的:


async function getRandomLine(filename) {

 var x=  await fs.readFile(filename, 'binary');

  ....

 return new Buffer(x)

}


查看完整回答
反對 回復 2022-12-02
  • 2 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號