You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中字符串与随机整数拼接返回[object Promise]问题

解决异步函数返回值拼接字符串出现"[object Promise]"的问题

问题原因

标记为async的函数,无论内部是否包含异步逻辑,其返回值都会被自动包装成Promise对象。直接将这个Promise和字符串拼接时,JavaScript会调用Promise的toString()方法,最终得到"Test_[object Promise]"的结果。

解决方法

方法1:使用await等待Promise兑现

因为addApiName本身也是async函数,所以可以用await关键字暂停函数执行,直到getRandomInt的Promise完成,拿到实际的随机整数后再进行拼接:

async addApiName(){
    var randInt = await this.getRandomInt(100,2000)
    var name = "Test_" + randInt
    // 后续可以正常使用name变量,比如return name或者执行其他逻辑
}

方法2:使用Promise的then()方法处理结果

如果不想使用await,可以通过then()注册回调函数,在Promise成功resolve后再完成字符串拼接:

async addApiName(){
    this.getRandomInt(100,2000).then(randInt => {
        var name = "Test_" + randInt
        // 在回调函数内处理拼接后的name
    })
}

额外优化建议

你的getRandomInt函数内部并没有真正的异步操作(比如没有await其他异步任务),若不需要处理异步逻辑,可直接去掉async关键字,这样它会直接返回原始的随机整数,从根源避免Promise拼接问题:

getRandomInt(min: number, max: number) {
    var min = Math.ceil(min);
    var max = Math.floor(max);
    return Math.floor(Math.random() * (max - min + 1) + min); 
}

内容的提问来源于stack exchange,提问作者JD2775

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:27:06