javascript函数中的axios返回数据

javascript函数中的axios返回数据,javascript,axios,Javascript,Axios,我有两个javascript文件 一: main_app.js import * as API from "./api.js"; const pin = API.getPin(); console.log(pin); 另一个是api.js const baseUrl = "https://some.com/api"; export function getPin() { try { axios.post(baseUrl, { metho

我有两个javascript文件

一: main_app.js

import * as API from "./api.js";

const pin = API.getPin();

console.log(pin);
另一个是api.js

const baseUrl = "https://some.com/api";

export function getPin() {
  try {
    axios.post(baseUrl, { method: "pin" }).then((res) => console.log(res));
  } catch {
    console.log("Fail");
  }
}
在第一个文件中,我需要保存getPin()的输出,但我总是在控制台中得到Promise-pending。 在axios调用和.then方法中,我可以console.log正确的数据,但无论我尝试什么,都无法返回数据

我也尝试过异步并等待,但没有结果

export async function getPin() {
  try {
    const res = await axios.post(baseUrl, { method: "pin" }).then(res => res.data);

    return res.data;
  } catch {
    console.log("Fail");
  }
}
我尝试过es6中的课程,但结果相同,然后认为我可能没有正确使用该课程:

export class Api {
  static baseUrl = "https://some.com/api";
  static response = null;

  static getPin() {
    const body = { method: "pin" };

    axios
      .post(this.baseUrl, body)
      .then((res) => (this.response = res.data))
      .catch((err) => console.error(err));
  }
}
我看过很多文章,我确信我遗漏了一些明显的东西,但我正在失去理智:-( 任何帮助都将不胜感激

编辑:不是一个重复的问题。我重新做了这个课程,看起来像这样

export default class API {
  static baseUrl = "https://some.com/api";
  static response = null;
  static pin = null;

  static getPin() {
    axios
      .post(this.baseUrl, { method: "pin" })
      .then((res) => (this.pin = res.data.pin));

    return this.pin;
  }
}

但是这仍然不能像我所需要的那样工作。请帮助在axios上使用
异步/await
模式时,
则不需要
等待axios.post
暂停代码的执行,直到承诺得到解决并从API调用返回数据,从而允许
res.data
包含r来自API的响应。请参阅下面的示例之一的修改版本:


导出异步函数getPin(){
试一试{
//而不是这一行:
//const res=await axios.post(baseUrl,{method:“pin”});
//请尝试以下操作,注意.then()已删除
const res=await axios.post(baseUrl,{method:“pin”});
//res包含来自API调用的响应,无需使用。然后。
//您可能希望将console.log(res.data)放在这里,以查看首先返回的内容。
返回res.data;
}捕获(e){
日志(“错误:”,e);
}
}
在您的
main_app.js
中,您需要修改代码,因为
API.getPin()
是一个异步API调用,这就是您得到承诺的原因

import*作为API从“/API.js”导入;
让平叶;
异步函数callAPIandSetPin(){
//必须等待,因为API.getPin()是异步的。
const pin=await API.getPin();
控制台日志(pin);
//如果出于任何原因需要全局pin,您可以从这里进行修改。
pinGlobal=pin;
}
callapiandpin();

导出函数getPin(){
函数不返回任何内容
导出异步函数getPin()
函数返回将作为数据的承诺(除非有错误)
静态getPin(){
函数不返回任何内容这回答了您的问题吗?在所有情况下
const pin=API.getPin()
…pin将是一个承诺…在代码1和3的情况下,
未定义
-在代码2的情况下,您需要的数据将在该承诺中解析,谢谢,但这仍然会返回一个承诺。我现在疯了:-)我不明白为什么这么复杂,或者我仍然缺少一个要点。我想要的只是从接收到的返回数据API@JakubKoudela,我只是做了一个编辑来进一步解释你需要做什么。这有帮助吗?