gpt4 book ai didi

javascript - 使用一个函数的结果作为另一个函数的变量 - node.js

转载 作者:行者123 更新时间:2023-12-03 02:32:23 25 4
gpt4 key购买 nike

我正在编写一个 node.js 脚本来生成 GitHub 安装访问 token 。这是我得到的:

const axios = require("axios");
var fs = require('fs');
var jwt = require("jsonwebtoken");

var gitInstallationAccessToken = {
genJWTToken: function(callback) {
var private_key = fs.readFileSync("/path/to/my/pemfile.pem");

const now = Math.round(Date.now() / 1000);
const payload = {
iat : now,
exp : now + (10 * 60),
iss : 7233
};

const token = jwt.sign(payload, private_key, { algorithm: 'RS256' })
callback(token);
},

genInstallationAccessToken: function(token, callback) {
var jwt = gitInstallationAccessToken.genJWTToken(function(token) {
return token;
});
console.log("JWT: ", jwt)
var instance = axios({
method: "post",
url: "https://api.github.com/installations/:installation_id/access_tokens",
headers: {
"Accept" : "application/vnd.github.machine-man-preview+json",
"Authorization" : `Bearer ${jwt}`
}
})
.then(function(response) {
console.log("Response: ",response.data);
callback(response);
})
.catch(function(error) {
console.warn("Unable to authenticate");
// The request was made and the server responded with a status code
// that falls out of the range of 2xx
if (error.response) {
console.warn(`Status ${error.response.status}`);
console.warn(`${error.response.data.message}`);
}
});
}
}

module.exports = gitInstallationAccessToken;

gitInstallationAccessToken.genInstallationAccessToken(function(response) {
console.log("response: ", response)
});

我的 JWT token 由 genJWTToken 生成。我可以看到,如果我在 genJWTToken 中的回调之前添加一个 console.log("Token: ", token)

我现在需要在 genInstallationAccessToken 中使用该 token ,但我显然调用它是错误的。如下返回未定义:

var jwt = gitInstallationAccessToken.genJWTToken(function(token) {
return token;
});
console.log("JWT: ", jwt)

如何解决这个问题?

最佳答案

我认为你应该考虑重构它并使用链式 promise ,它会更容易理解和控制。

类似这样的事情:

function getToken() {
return new Promise(function(resolve, reject) {
resolve('token')
})
}


function chainPromise() {
var token
getToken().then((response) => {
token = response
console.log(token)
}).then(() => {
console.log('I am here and also see: ', token)
})
}

chainPromise()

然后您应该能够轻松追踪 token 的路径

关于javascript - 使用一个函数的结果作为另一个函数的变量 - node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48680481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com