【发布时间】:2020-12-09 18:28:46
【问题描述】:
编辑: 尝试了下面的建议以及更多的东西,现在这是代码,我几乎只是让它全部异步等待而不是然后捕获......
makeNextAccount();
console.log("Making :" + merchantsToCreate.length + " Accounts")
async function makeNextAccount(currentIndex) {
for (const item of merchantsToCreate) {
try{
let accId = "";
var createAccBody = JSON.stringify(
{
"email":emails[item],
"firstName":"sdd",
"lastName":"dgdg"
});
var createAcc = {
method: 'post',
url: url1,
headers: awsHeaders,
data : createAccBody
};
const createdAccResult = await axios(createAcc); // wait for the request to finish
await Promise.all(createdAccResult);
console.log('Done!');
accId = createdAccResult.data.accountId;
console.log(JSON.stringify("ACCOUNT CREATED:" + accId));
} catch(err) {
console.log("ERROR Create acc:" + err );
}
try{
var initUnAuthBody = JSON.stringify(
{
"accountId": accId
});
var initUnAuth = {
method: 'post',
url: url2,
headers: awsHeaders,
data : initUnAuthBody
};
const initUnAuthResult = await axios(initUnAuth); // wait for the request to finish
console.log(JSON.stringify("Init unAuth for:" +accId+", with response:" + initUnAuthResult.status));
}catch(err) {
console.log("ERROR unautinit:" + err);
}
try{
var provisionBody = JSON.stringify(
{
"name": accId,
"active": "1"
});
var provision = {
method: 'post',
url: url3,
headers: awsHeaders,
data : provisionBody
};
const provisionResult = await axios(provision); // wait for the request to finish
console.log(JSON.stringify("Provision for:" + accId+", with response:" + provisionResult.status));
}catch(err) {
console.log("ERROR provision:" + err);
}
try{
var salesForceRecordody = JSON.stringify(
{
"email": emails[item],
"accountId": accId,
});
var salesForceRecord = {
method: 'post',
url: url4,
headers: awsHeaders,
data : salesForceRecordody
};
const salesForceRecordResult = await axios(salesForceRecord); // wait for the request to finish
console.log(JSON.stringify("SalesForce Record for:" +accId+", with response:" + salesForceRecordResult.status));
accCreatedList.push(accId); // Push to created list only when all steps are done
}catch(err) {
console.log("ERROR Salesforce:" + err);
}
}
}
结果是,如您所见,返回 400 错误,但我不知道在 axios 中使用 async await 时如何从服务器获取完整响应,使用 then 和抓住,但我只能得到这个简单的回应。
在控制台中打印正文/标题时,一切似乎都很好,这与我之前所做的请求相同,但由于某种原因它在这里失败了......
Making :3 Accounts
ERROR Create acc:Error: Request failed with status code 400
ERROR unautinit:Error: Request failed with status code 400
ERROR provision:Error: Request failed with status code 400
ERROR Salesforce:Error: Request failed with status code 400
ERROR Create acc:Error: Request failed with status code 400
ERROR unautinit:Error: Request failed with status code 400
ERROR provision:Error: Request failed with status code 400
ERROR Salesforce:Error: Request failed with status code 400
ERROR Create acc:Error: Request failed with status code 400
ERROR unautinit:Error: Request failed with status code 400
ERROR provision:Error: Request failed with status code 400
ERROR Salesforce:Error: Request failed with status code 400
【问题讨论】:
标签: javascript node.js asynchronous async-await axios