当前位置: 首页 > 知识库问答 >
问题:

javascript - promise问题?

谭泳
2023-06-09

我有一个vue写的标签

<img :src=getIcon(id)>
 const getIcon = async (appId: number) => {
     const db = await getInstance().queryByPrimaryKey(appId)
     return db ? db.url : ''
 }

其中,queryByPrimaryKey返回的是一个promise,所以这里用await等待promise的值,因为用到了await,所以外层又需要用async包裹,这样整体函数返回的又是一个promise,那么src属性实际上要的是返回的string值,而不是包裹着string的promise,我如何拿到string值?

共有2个答案

柴良哲
2023-06-09

方法一:

<img :src="imgUrl">
 const getIcon = async (appId: number) => {
     const db = await getInstance().queryByPrimaryKey(appId)
     imgUrl = db ? db.url : ''
 }

方法二:
计算属性

https://cn.vuejs.org/guide/essentials/computed.html
锺离阿苏
2023-06-09

你这样显然不行,你直接 watch id 就行

const imgSrc = ref('')
const id = ref<number | null>(null)
watch(
    () => id.value,
    async newVal => {
        if (!newVal) return
        const db = await getInstance().queryByPrimaryKey(newVal)
        imgSrc.value = db ? db.url : ''
    }
)
 类似资料:
  • 第一个问题,这个为什么先输出3后输出2呢 第二个问题,这个为什么会交错输出呢,142536 promise小白一枚,上述两个疑问,希望能得到详细的解答

  • 请大佬帮忙分析一下,以下代码执行顺序(正确的顺序是:a 1 2 3 b 4 c 5):

  • 请问上面这段代码,我想封装成Promise 这种 直接调用this.home_barlist1().then 该怎么改呢? 我改成下面这样 好像不行

  • 打印2的位置 怎么解释呢

  • 问题内容: 我是一个node.js新手,我试图了解如何以非阻塞方式像节点一样组织一些逻辑。 我有一组环境[‘stage’,’prod’],还有另一组称为品牌[‘A’,’B’,’C’]的参数和一组设备[‘phone’,’tablet’] 。 在节点的回调驱动的世界中,我有这个: 我正在尝试为每个环境构建带有块的报告: 我的问题是,由于这里的所有内容都是如此异步的,尤其是在getTape内部,它调用了

  • js Promise 返回数组但无法使用 该如何返回结果呢? 在这里打印e,可以看到是个数组,但e.length显示就是0;而且直接使用e[0]就是undefined