我几周来一直在努力解决这些问题,我正在使用名为" Binance"的NPM。它与Binance API连接,其创建者为我们提供了以下代码:
binanceRest.newOrder({
timestamp: new Date().getTime(),
symbol: stack_item.bns_market,
side: stack_item.bns_side,
timeInForce: stack_item.bns_timeinforce,
quantity: stack_item.bns_quantity, //min 0.05
price: stack_item.bns_price,
type: stack_item.bns_type
}).then((data) => {
}).catch((err) => {
});
确实 一致地创建订单,但是当我达到承诺时,我想插入一个包含它返回的数据的文档,如下所示:
binanceRest.newOrder({
timestamp: new Date().getTime(),
symbol: stack_item.bns_market,
side: stack_item.bns_side,
timeInForce: stack_item.bns_timeinforce,
quantity: stack_item.bns_quantity, //min 0.05
price: stack_item.bns_price,
type: stack_item.bns_type
}).then((data) => {
var data_insert = {
orl_user: stack_item.bns_user,
orl_exchange: 'Binance',
orl_market: stack_item.bns_market,
orl_id: data.orderId,
orl_data: data,
createdAt: new Date()
}
order_list_model.create(data_insert, function(err){
if(err){ console.log(err) }else{
console.log('insert_order_list');
}
});
}).catch((err) => {
});
程序始终显示控制台消息" insert_order_list",但它并不总是插入任何内容,它似乎随机插入,有时它确实有时它没有。
我试过插入3次看看发生了什么,似乎只插入了两次。
我之前从未见过这种行为,怎么会这么随意?
我插入的模型没有像unique或required那样的限制。它从未插入缺少字段的数据。
答案 0 :(得分:1)
您的then
功能无处可去。有时它会在您检查它是否插入任何内容之前解决,有时它不会。它总是会解决最终(这就是您总是看到日志的原因),但您需要更仔细地管理您的承诺,以确保按照您期望的顺序发生事情。
要解决此问题,请让then
函数返回在order_list_model.create
回调中解析的新承诺。