我正在尝试将获取函数放入一个单独的文件中,因此我可以轻松地组织这些API获取。但是,当我尝试获取并返回数据时,它会给我null或意外的json对象。这是我的src的一部分:
app = Flask(__name__)
api = Api(app)
@app.after_request
def after_request(response):
response.headers.add('Access-Control-Allow-Origin', '*')
response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS')
return response
if __name__ == '__main__':
app.run()
这是另一个档案。
//api.js
export async function LoginAPI(username, password) {
const url = baseURL + "/login/";
var params = {username: username, password: md5.hex_md5(password)};
let response = await fetch(url, {
method: 'POST',
headers: {'Accept': 'application/json','Content-Type': 'application/x-www-form-urlencoded'},
body: JSON.stringify(params)
});
return await fetch(url, {
method: 'POST',
headers: header,
body: JSON.stringify(params)
})
.then((res) => res.text())
.then((text) => text.length ? JSON.parse(text) : {})
.catch((error) => {
throw error;
});
};
fetch正在运行,它正在与服务器通信。但是,控制台日志会在第一时间返回给我
//index.js
var Login = React.createClass({
onPress_login: function() {
var value = this.refs.form.getValue();
if (value) {
result = LoginAPI(value.username, value.password);
console.log(result);
} else {
this.AlertDialog.openDialog();
}
},
render() {
return (
(...)
<Button onPress={this.onPress_login}>
<Text>Login</Text>
</Button>
我假设控制台中的 Promise _45: 0_54: null _65: null _81: 1 __proto__: Object
日志首先不是await结果(来自服务器的实际响应,而是获取响应的对象)。我试图在线搜索方法,但我找不到任何帖子/博客/文章说如何作为函数调用获取。
有没有办法像swift,result
请?
答案 0 :(得分:3)
问题是你正在制作异步功能而不是等待响应,你会看到那种控制台日志。
试试这个:
result = await LoginAPI(value.username, value.password);
如果这是你的问题,请告诉我。