如何从此功能中提取凭证?

问题描述

我正在尝试从这段代码提取“ parse”变量。我的目标是使其在函数外部用作全局变量。现在,我将其分配给凭据。 如何返回带有更新的解析信息的var凭证? 我正在使用node.js中的fs模块读取我的凭据文件

现在,当我通过readcredentials()调用代码时,此代码将返回“未定义”;

function readCredentials() {
  var credentials = 2
  fs.readFile('credentials.json',(err,content) => {
    if (err) return console.log('Error loading client secret file:',err);
    var parse = JSON.parse(content);
    parse = credentials;
  });
  return credentials;
}

解决方法

这可能是因为回调是异步的。也就是说,在回调处理数据时,它会向下移动并返回credentials的当前值2。执行必须等待以准备好凭据的值。
处理此问题的更清晰方法是使用promise。

const fs = require("fs");

function readCredentials() {
  return new Promise((resolve,reject)=>{
    fs.readFile('credentials.json',(err,content) => {
      if (err) return reject('Error loading client secret file:',err);
      return resolve(JSON.parse(content));
    });
  });
}

readCredentials()
  .then(res=>{
    console.log("Res:",res)
  })
  .catch(err=>{
    console.log("Error:",err);
  })