gpt4 book ai didi

ios - React Native : RNIap. getPurchaseHistory().then 无限运行

转载 作者:行者123 更新时间:2023-12-01 21:26:14 24 4
gpt4 key购买 nike

项目在此Github Repository .带有代码的文件位于 components/Soundboard.js
这段代码以前可以运行,但现在看来,promise 一直在运行。看起来解析函数和拒绝函数都没有执行,因为如果我取消注释下面的所有注释行并调用函数 askForPurchase()打印到控制台的唯一内容是

  • 一个看起来像 "_40": 0, "_55": {"_40": 0, "_55": null, "_65": 0, "_72": null}, "_65": 3, "_72": null} 的对象对于线路 console.log(RNIap.getPurchaseHistory())
  • 然后是 end 这个词.
  • buyProduct()函数也不再初始化 IAP。
    const buyProduct = function(){
    RNIap.requestPurchase("1985162691", false).then(purchase => {
    store.dispatch(setPurchases(purchase))
    await RNIap.finishTransaction(purchase, false) //developerPayloadAndroid?: string Should I use this argument? I don't get how to use it
    }).catch((error) => {
    console.log(error.message);
    })
    }

    const askForPurchase = function(){
    if (!store.getState().purchase){
    //console.log(RNIap.getPurchaseHistory())
    RNIap.getPurchaseHistory().then(purchase => {
    //console.log(`test1`)
    store.dispatch(setPurchases(purchase))
    if (purchase.length == 0){
    //console.log(`test if`)
    buyProduct()
    }else{
    //console.log(`test else`)
    RNIap.getAvailablePurchases()
    }
    }, reason => {
    console.log(reason)
    })
    //console.log(`end`)
    }
    }

    额外
    这段代码几个月前还在工作,我什至从那时起提交了一个提交(1b9cb81f229680e173ce910892dddedc632c1651,评论:“让印章图片更卡通化”)来测试。拉出此提交后,我删除了我的 node_modules 和 pod,并清理了我的构建文件夹,但是 askForPurchase()buyProduct()功能也不再在该提交中起作用。
    我正在运行 ios 13.6.1 的真实 iPhone SE 上进行测试

    如果您需要测试它,我创建了一个沙盒测试器,但我认为您不需要它
    email: rniapsandbox@gmail.com
    pw: Somepassword1

    最佳答案

    你好@Sam 问题是异步等待问题,他们无法获得值(value),因为他们在获取数据之前没有等待获取数据,它在没有数据的情况下触发它并且它​​正在返回 promise ,所以你必须使用 async function
    所以你的代码就像

    const buyProduct = async()=>{
    await RNIap.requestPurchase("1985162691", false).then(purchase => {
    store.dispatch(setPurchases(purchase))
    await RNIap.finishTransaction(purchase, false) //developerPayloadAndroid?: string Should I use this argument? I don't get how to use it
    }).catch((error) => {
    console.log(error.message);
    })}

    const askForPurchase = async()=>{
    if (!store.getState().purchase){
    //console.log(await RNIap.getPurchaseHistory())
    await RNIap.getPurchaseHistory().then(purchase => {
    //console.log(`test1`)
    store.dispatch(setPurchases(purchase))
    if (purchase.length == 0){
    //console.log(`test if`)
    buyProduct()
    }else{
    //console.log(`test else`)
    RNIap.getAvailablePurchases()
    }
    }, reason => {
    console.log(reason)
    })
    //console.log(`end`)
    }}

    关于ios - React Native : RNIap. getPurchaseHistory().then 无限运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63478519/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com