javascript - React Native 中的 Promise 调用

标签 javascript react-native

React Native 和 JavaScript 的新手。目前,我正在尝试在使用 react-native-sqlite-storage 时制定一个 Promise 来处理未定义的错误。包。

我正在关注上一篇文章 here ,但据我所知,还没有成功地正确实现 Promise。

这是我当前的功能:

nextPackage (q_id: number) {
    return new Promise((resolve, reject) =>
        db.transaction(tx => { 
            tx.executeSql(
                'SELECT * FROM Questions INNER JOIN Choices on Choices.q_id = Questions.global_id WHERE Questions.global_id = ?', [q_id], (tx, results) => {
                    for (let i = 0; i < results.rows.length; i++) {
                        console.log('item:', i);
                        console.log('row:', results.rows.item(i));
                        this.pack.push(results.rows.item(i));
                    }
                    resolve(this.pack);
                }, function (tx, error) {
                    reject(error);
            });
        })
    )
}

以及调用它的屏幕:

this.pack = this.wrapper.nextPackage(this.session.data_next.qID)
        .then(data => { 
            console.log("Retrieved data: ", data);
        })
        .catch(error => {
            console.error(error);
        })

    this.pkHelp = new PackageHelper(this.pack);

但是,当我尝试访问this.pack[0]时我收到 undefined is not an object (evaluating 'this.pack[0].choiceType') 。 console.log() 显示数据库行确实正在被读入,并且 choiceType 确实是正确的列名。

预先感谢您的帮助!

最佳答案

您不能像这样将值分配给您的包。返回值位于then部分。你可以做这样的事情

this.wrapper.nextPackage(this.session.data_next.qID).then(data => {
   this.pkHelp = new PackageHelper(this.pack);
}).catch(error => {
   console.error(error);
});

或者您可以使用await。但你必须在async函数中使用它

try {
   this.pkHelp = await this.wrapper.nextPackage(this.session.data_next.qID);
   this.pkHelp = new PackageHelper(this.pack);
} catch(error) {
   console.error(error);
}

关于javascript - React Native 中的 Promise 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55093691/

相关文章:

javascript - 访问 chrome 扩展中当前选项卡的所有窗口变量

javascript - 使用 Jquery/Javascript 刷新后设置 Selectbox 值?

javascript - 如何只清除文件上传字段?

javascript - json.stringify 对于一个对象返回空白 [ ],而不是填充的 { }

javascript - React Navigation如何从堆栈导航内部隐藏标签栏

react-native - 错误 : Element type is invalid: expected a string or a class/function but got: undefined after upgrade of React Native

javascript - data-th-id 问题

javascript - 如何让 React Native 的 ScrollView 初始缩放不为 1?

navigationbar - 导航栏 - React Native

react-native - react 导航 Stack.Screen screenProps 的 5 倍使用