Javascript 需要其他承诺输出的承诺
我正在为一个express API编写一些代码,该API本质上是为了一个身份验证令牌而连接到外部REST服务,然后使用该令牌来做一些事情。我对NodeJS非常陌生,所以我认为我在整个sync/async方面遇到了很多麻烦 现在我的主要问题似乎是我得到了Javascript 需要其他承诺输出的承诺,javascript,node.js,express,Javascript,Node.js,Express,我正在为一个express API编写一些代码,该API本质上是为了一个身份验证令牌而连接到外部REST服务,然后使用该令牌来做一些事情。我对NodeJS非常陌生,所以我认为我在整个sync/async方面遇到了很多麻烦 现在我的主要问题似乎是我得到了ReferenceError:err没有定义,这似乎与library.js中的行有关,但我预计这里会有很多问题,希望能让我回到正确的轨道上的任何东西都可以 index.js library = require('library.js'); mod
ReferenceError:err没有定义
,这似乎与library.js中的行有关,但我预计这里会有很多问题,希望能让我回到正确的轨道上的任何东西都可以
index.js
library = require('library.js');
module.exports = async (req,res) => {
// This is a test endpoint for prototyping code and testing calls.
URI = "/some/uri";
method = "GET";
body = "";
try {
restResponse = await library.RESTCall(URI,method,body);
res.send(data);
} catch (e) {
return res.status(500).json({ errors: err});
}
};
library.js
exports.RESTCall = async function(URI,method,body) {
return new Promise((resolve, reject) => {
getAuthToken().then((token) => {
console.log("Token: " + token);
try {
// Do stuff with the token to make another call
resolve(data);
} catch (e) {
reject(e);
}
}).catch((err) => {
reject(err);
});
});
}
exports.getAuthToken = () => {
return new Promise((resolve, reject) => {
try {
// Do stuff to get an authentication token
resolve(authToken);
} catch(e) {
reject("Failed to get Facets Authentication token. Error: " + e);
}
});
}
这看起来只是一个打字错误:
return res.status(500).json({ errors: e});
供参考:
exports.RESTCall = async function(URI,method,body) {
return new Promise((resolve, reject) => {
getAuthToken().then((token) => {
console.log("Token: " + token);
try {
// Do stuff with the token to make another call
resolve(data);
} catch (e) {
reject(e);
}
}).catch((err) => {
reject(err);
});
});
}
大致相当,但稍差如下:
exports.RESTCall=函数(URI、方法、正文){
返回getAuthToken()。然后((令牌)=>{
console.log(“令牌:+Token”);
//用代币再打一次电话
返回数据;
}
}
但由于您有async/await,因此可以进一步简化:
exports.RESTCall=异步函数(URI、方法、正文){
const token=等待getAuthToken();
console.log(“令牌:+Token”);
//用代币再打一次电话
返回数据;
}
<>你每次看到你自己的代码<代码>新承诺<代码>,我认为你应该花时间去学习承诺是如何工作的。在索引中.js你有<代码> JSON({错误:Err} /代码),因为你使用<代码> catch(e) <代码>返回RES.STATE(500).JSON({错误:Err})=>
返回res.status(500).json({errors:e})