React Native 如何在TypeScript中正确返回一个Promise?

kxkpmulp  于 2022-11-30  发布在  React
关注(0)|答案(2)|浏览(167)

下面的代码:

import {initConnection,IapIosSk2, setup} from "react-native-iap"

async nativeTest() : Promise<ProductStatus[]>{
 

        try { 
            let stat: Promise<ProductStatus[]> =  await (IapIosSk2).subscriptionStatus('sku')
            setup({storekitMode:'STOREKIT2_MODE'})
            initConnection()
            return await new Promise((resolve, reject) => {
                if (stat) {
                    for (let data in stat){
                        console.log(data)
                    }
                    resolve(stat);
                } else {
                reject(new Error('Failed'));
                }
            });
            }
            catch(e){
                console.log(e)
            }
        }

我正在使用react-native-IAP库,并且在“stat”变量下收到以下错误:

Type 'ProductStatus[]' is missing the following properties from type 'Promise<ProductStatus[]>': then, catch, finally, [Symbol.toStringTag]

我假设这是一个错误,我如何处理的承诺?任何决议将是伟大的,谢谢。

5t7ly7z5

5t7ly7z51#

let stat: Promise<ProductStatus[]> =  await (IapIosSk2).subscriptionStatus('sku')

await的全部意义在于,它将包含函数置于休眠状态,直到解析了promise,然后将其求值为promise的解析值。
如果你想在那里得到一个承诺,不要使用await。(不要这样做,该行之后的代码假定你没有承诺)。
如果您使用await,则可能需要ProductStatus[],而不是Promise<ProductStatus[]>

kqlmhetl

kqlmhetl2#

这里的变量类型将不会是Promise〈ProductStatus[],因为你已经使用await完成了承诺。所以变量stat类型应该是ProductStatus[],

相关问题