从另一个 axios 承诺进行 axios 调用并保存返回的数据

我正在从另一个调用的 promise 进行 axios 调用axios,代码如下所示,调用基本上是从第一种方法到第二种方法。


基于建议的更新代码 它只是说:不能在异步函数之外使用关键字'await'然后我尝试了


var data = async () => {

        await this.checkParentLoggerLevel();

      };

仍然没有工作


async updateLevel(logger, level, index) {

      alert(index);

      axios

        .post(

          'url'

        )

        .then(() => {

          var data = await this.checkParentLoggerLevel();


          alert('waiting');

          alert(

            'This will be executed before the second methods returns HEllo'

          );

          alert(data);

        });

    },

第二种方法:


async checkParentLoggerLevel() {

      alert('inside checkParentLoggerLevel ');

      return await axios

        .get('url')

        .then(() => {

          alert('returning hello');

          return 'hello';

        });

    },

我的目标是在第一种方法中保存返回hello的数据变量。这是行不通的。另一个问题是在this.checkParentLoggerLevel()方法调用代码执行继续并且不等待返回值之后。


牛魔王的故事
浏览 272回答 2
2回答

斯蒂芬大帝

发生这种情况是因为你内心checkParentLoggerLevel没有等待axios承诺完成。你可以这样做:async checkParentLoggerLevel() {  alert('inside checkParentLoggerLevel ');  return await axios    .get('url')    .then((res) => {      return 'hello';    });}此外,您需要在内部等待updateLevel:async updateLevel() {  axios    .post(url)    .then(async (res) => {      var data = await this.checkParentLoggerLevel();      alert("This will be executed before the second methods returns HEllo");      alert(data);    });}

慕少森

你应该链接承诺,所以:updateLevel() {  axios    .post(url)    .then(res => {      return this.checkParentLoggerLevel.then(data => ([res, data]);    })    .then(([res, data]) => {       // here    });}或者简单地使用异步等待:async updateLevel() {  const res = await axios.post(url);  const data = await this.checkParentLoggerLevel();  // Do whatever you want}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript