Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript (js)使用api包装器编写异步函数_Javascript_Node.js_Function_Api_Asynchronous - Fatal编程技术网

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;
    }