Я столкнулся с необъяснимой ошибкой при развертывании приведенного ниже кода на моем рабочем сайте.Локально все эти функции были протестированы и работают.
Я пытался понять обещания, которые, кажется, не выполняются, но они не исключают никаких исключений.UsersApiGateway.getNonce - это запрос на получение, и я подтвердил, что получаю правильное возвращаемое значение при отправке запроса на получение через POSTMAN.
В моих журналах AWS он в основном показывает, что он работает до точки, указанной ниже, а затем просто останавливается.И затем, возможно, через 10 минут он прекращает попытки вызвать процесс через asyncTimeout, и затем он постоянно зависает.Любая помощь в том, как я могу найти причину этого, приветствуется.
Функция-нарушитель:
async createBuyOrder(tokenAddress, amountSell, amountBuy) {
amountSell = new BigNumber(amountSell);
amountBuy = new BigNumber(amountBuy);
let nonce = '';
[amountBuy, amountSell, nonce] = await Promise.all([
web3Service.convertToWei(tokenAddress, amountBuy),
web3Service.convertToWei(ETHER_ADDRESS, amountSell),
usersApiGateway.getNonce(this.adminAccount)
]);
// FUNCTION FAILS TO RETURN ANYTHING AFTER THIS POINT
// Console.log for nonce, amount buy/sell/buy order below fail to show up
// that is what I mean by not working
const buyOrder = {
"addressBuy" : tokenAddress,
"amountBuy" : amountBuy,
"addressSell": ETHER_ADDRESS,
"amountSell" : amountSell,
"nonce" : nonce,
}
await this.createOrder(buyOrder);
}
Вызывается из этой функции:
async populateOrderBook(tokenAddress, numOrders = 1) {
for(let i = numOrders; i > 0; i--) {
for(let j = -1; j < numOrders - i; j++){
try {
await this.createBuyOrder(tokenAddress, BUYORDER_amountSell, BUYORDER_amountBuy);
await this.createSellOrder(tokenAddress, SELLORDER_amountBuy, SELLORDER_amountSell);
} catch(exc) {
console.log(exc)
}
}
}
}
, которая периодически вызывается в функции init () класса
asyncTimeout(async () => {
try {
await Promise.all([
this.populateOrderBook(tokenAddress, 3)
]);
} catch (exc) {
console.error('Error while populating order book from Kyber');
console.error(exc);
}
}, 60000);
Я тестировал, казалось бы, оскорбительную функцию от web3Service, которую она хочет повесить, и, кажется, она работает локально
async convertToWei(tokenAddress, amount) {
const numberOfDecimals = await this.tokenDecimals(tokenAddress);
return new BigNumber(toBaseUnit(amount, numberOfDecimals));
}