vue 传不同的参数 得到不同的值该怎么做

//api.commonItem 是我写的一个请求
getCommonItem (value) {
        let variable = ''
        api.commonItem({value: value}).then(res => {
          variable = res.data.name
          console.log("第一次",variable)
        })
        console.log("第二次",variable)
        return variable
      },

clipboard.png

我调用了两次getCommonItem方法 传了两次参数 我想得到不同的值 但是第二次就为空了 是不是逻辑不对 请大神帮我看看 是不是请求还没完成 variable 已经return 出去了

阅读 3.6k
1 个回答

你封装了 commonItem 那应该知道返回了一个 Promise,这是个异步操作,如果你想 variable 能被 getCommonItem 的调用方拿到,那要么改成经典的 callback

getCommonItem(value, callback) {
    api.commonItem({value: value}).then(res => {
        let variable = res.data.name
        console.log("第一次",variable)
        callback(variable)
    })
}

getCommonItem(value, variable => {
    console.log('第二次', variable)
})

要么继续沿用 Promise

getCommonItem(value) {
    return api.commonItem({value: value}).then(res => {
        let variable = res.data.name
        console.log("第一次",variable)
        return Promise.resolve(variable)
    })
}

getCommonItem(...)
    .then(variable => {
        console.log('第二次', variable)
    })
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题