【问题标题】:How to Pass a Const from a File to Another如何将一个常量从一个文件传递到另一个文件
【发布时间】:2019-01-17 21:40:24
【问题描述】:

我在将以下 const clouds 从一个文件传递到另一个文件时遇到问题。

我完全错过了这里的一些东西,我已经盯着这个太久了 - 非常感谢你的帮助!

来自:getAVWXData.js

import axios from 'axios'

export function getAVWXData() {

  axios.get(
    https://some_url
  )
  .then((response) => {
    const v      = this     
    const res    = response.data
    const clouds = res['Cloud-List'][0.0][1];
    console.log('Give me Clouds! ' + clouds) // <-- This works
  })
}

收件人:

import { getAVWXData } from './get-avwx-data'

getAVWXData()
console.log('Give me Clouds! ' + getAVWXData.clouds) // < Returns undefined!

【问题讨论】:

  • getAVWXData() 是一个异步函数。在它完成并运行其.then 条件之前,您正在检查它被调用后的瞬间。
  • 我想这就是正在发生的事情。但是,我一直在想如何使用.then 来防止这种情况发生。

标签: javascript variables vue.js constants


【解决方案1】:

你应该返回一个带有值的承诺:

import axios from 'axios'

export function getAVWXData() {

  return axios.get(
    https://some_url
  )
  .then((response) => {
    const v      = this     
    const res    = response.data
    return res['Cloud-List'][0.0][1];
  })
}

和:

import { getAVWXData } from './get-avwx-data'

getAVWXData().then((result) => {
  console.log('Give me Clouds! ' + result.result) // <- Should Return a value
})

【讨论】:

  • 谢谢!我之前在正确使用 return 时遇到了问题,我认为这就是原因。
【解决方案2】:

这里的问题是getAVWXData 没有返回任何数据,而且您尝试检索的数据也在已解决的承诺中。为了获得clouds 值,您需要执行以下操作:

import axios from 'axios'

export function getAVWXData() {

  return axios.get(
    https://some_url
  );
}

import { getAVWXData } from './get-avwx-data'

getAVWXData().then((response) => {
  console.log('Give me Clouds! ' + response.data.clouds)
});

您必须等到 promise 解决后才能从响应中获取数据。

【讨论】:

  • 谢谢你的答案。这也可以,但我接受了上面的答案,因为它有助于将逻辑和垃圾与导入文件分开。 (我应该在我的问题中说明这一点)。
猜你喜欢
  • 2014-07-02
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2020-07-10
相关资源
最近更新 更多