Javascript 遍历列表并进行顺序网络调用
如何使用sdk遍历列表并进行顺序网络调用? 我正在尝试使用Coinbase的NodeSDK,获取所有帐户的前10个事务 我有一个帐户列表,我遍历它们并调用client.account、client.transactions和client.transactions(分页)。我将结果添加到一个事务数组并返回该数组 我无法让它与异步/等待或请求承诺一起工作。 有什么想法吗Javascript 遍历列表并进行顺序网络调用,javascript,node.js,aws-lambda,Javascript,Node.js,Aws Lambda,如何使用sdk遍历列表并进行顺序网络调用? 我正在尝试使用Coinbase的NodeSDK,获取所有帐户的前10个事务 我有一个帐户列表,我遍历它们并调用client.account、client.transactions和client.transactions(分页)。我将结果添加到一个事务数组并返回该数组 我无法让它与异步/等待或请求承诺一起工作。 有什么想法吗 通过使用async/await和Promissions解决了这个问题。等待coinbase方法不会起作用,因为它们不是异步函数(
通过使用async/await和Promissions解决了这个问题。等待coinbase方法不会起作用,因为它们不是异步函数(令人惊讶!)
请添加一些您已经尝试过的代码
var rp = require('request-promise');
var coinbase = require('coinbase');
var client = new coinbase.Client({ 'apiKey': 'keyStuff', 'apiSecret': 'secretStuff' });
var accountList = ['acct1','acct2','acct3',];
var transactionList = [];
try {
let ps = [];
accountList.forEach(acctId => {
var account = client.getAccount(accountId, null);
ps.push(rp(account));
});
Promise.all(ps)
.then(responses => {
for (var i = 0; i < responses.length; i++) {
var result = responses[i];
rp(result.account.getTransactions(null))
.then(res => {
res.pagination = 10;
return rp(result.account.getTransactions(null, res.pagination));
}).catch(err => console.log(err))
.then(txns => {
try {
if (txns.length > 0) {
txns.forEach(function(txn) {
var transaction = {
"trade_type": "",
"price": ""
};
transaction.trade_type = txn.type;
transaction.price = txn.native_amount.amount;
transactionList.push(transaction);
});
}
}
catch (err) {
console.log(err);
}
});
}
}).catch(err => console.log(err));
return transactionList;
//-------------------------------------------------------------------
// if (accountList.length > 0) {
// for (let acctId of accountList) {
// console.log("account id: " + acctId);
// await delayTransactions(acctId);
// }
// console.log("got here last");
// return transactionList;
// }
}
catch (error) {
console.log(error);
}
await client.getAccount(accountId, async function(err, account) {
if (err) {
console.log(err);
}
else {
await account.getTransactions(null, async function(err, txns, pagination) {
.
.
.
function delayedMethod() {
new Promise(resolve => {
client.getAccount(accountId, async function(err, account) {
if (err) {
console.log(err);
}
else {
account.getTransactions(null, async function(err, txns, pagination) {
.
.
.
resolve();
});
}