Javascript (js)使用api包装器编写异步函数
我目前正在使用 我想做的是这样的:Javascript (js)使用api包装器编写异步函数,javascript,node.js,function,api,asynchronous,Javascript,Node.js,Function,Api,Asynchronous,我目前正在使用 我想做的是这样的: const{RestClient}=require('@pxtrn/bybit-api'); 常量API_键='xxx'; const PRIVATE_KEY='yyy'; const client=新的RestClient(API_密钥、私钥); getPosition({symbol:'BTCUSD'}) 。然后(msg=>{ 让btcPositionCheck=msg.result.size; 如果(btcPositionCheck==0){ conso
const{RestClient}=require('@pxtrn/bybit-api');
常量API_键='xxx';
const PRIVATE_KEY='yyy';
const client=新的RestClient(API_密钥、私钥);
getPosition({symbol:'BTCUSD'})
。然后(msg=>{
让btcPositionCheck=msg.result.size;
如果(btcPositionCheck==0){
console.log(“空”)
}否则{
让btcPositionSize=btcPositionCheck;
让btcPositionSide=msg.result.side;
}
})
.catch(错误=>{
控制台错误(err);
});
client.getPosition({symbol:'ethuds'})
。然后(msg=>{
让ethPositionCheck=msg.result.size;
如果(ethPositionCheck==0){
console.log(“空”)
}否则{
让ethPositionSize=ethPositionCheck;
设ethPositionSide=msg.result.side;
}
})
.catch(错误=>{
控制台错误(err);
});
console.log(btcPositionSize+''+ethPositionSize)
返回我以下错误:
引用错误:未定义btcPositionSize
只是因为我不在范围之内,我知道。然而,我不确定如何重写以下内容,以便更好地构建我需要的内容。(我还需要为3种不同的资产调用getPosition,并从每次调用中获取变量,以便稍后在代码中使用。)如果这有意义的话。非常感谢您的帮助
编辑:
异步函数getPosition({symbol:BTCUSD}){
试一试{
让btcPositionCheck=msg.result.size;
}捕获(错误){
返回null;
}
}
我正试图重写它,但我不确定如何一旦进入异步上下文,就需要停留在异步上下文中才能获取值。在您的情况下,有一些承诺需要解决,您可以等待它们,然后打印出来 此外,还需要确保变量在有效范围内
const {RestClient} = require('@pxtrn/bybit-api');
const API_KEY = 'xxx';
const PRIVATE_KEY = 'yyy';
const client = new RestClient(API_KEY, PRIVATE_KEY);
async function doItAll() {
let btcPositionCheck;
let ethPositionCheck;
await client.getPosition({symbol: 'BTCUSD'})
.then(msg => {
btcPositionCheck = msg.result.size;
if (btcPositionCheck == 0) {
console.log("empty")
} else {
let btcPositionSize = btcPositionCheck;
let btcPositionSide = msg.result.side;
}
})
.catch(err => {
console.error(err);
});
await client.getPosition({symbol: 'ETHUSD'})
.then(msg => {
ethPositionCheck = msg.result.size;
if (ethPositionCheck == 0) {
console.log("empty")
} else {
let ethPositionSize = ethPositionCheck;
let ethPositionSide = msg.result.side;
}
})
.catch(err => {
console.error(err);
});
console.log(btcPositionSize + ' ' + ethPositionSize)
}
请注意,更好的方法是将wait承诺转换为value,这意味着它可以是这样的(要使用wait,它需要在异步函数中)
这回答了你的问题吗?
const msg = await client.getPosition({symbol: 'BTCUSD'})
btcPositionCheck = msg.result.size;
if (btcPositionCheck == 0) {
console.log("empty")
} else {
let btcPositionSize = btcPositionCheck;
let btcPositionSide = msg.result.side;
}