我正在尝试使用compute()函数来触发调用HTTP POST的顶级方法。
我可以看到正在执行的方法,但是它只是挂在我做实际文章的地方,没有返回错误。
但是,如果我在不调用compute的情况下调用它,它将正常工作
uploadData(Map args) {
print("uploading data"); // i see this in the logs
API().uploadData(args["data"], args["user"], args["apikey"]);
}
,通过
调用 compute(uploadData, {
"data": dataList,
"user": widget.userProps,
"apikey": widget.apiKey
});
最后这是我的API uploadData方法
uploadData(List files, User userdata, String apikey) async {
try {
String sessionid = await _getSession();
String _base = 'http://192.168.2.13:3000/upload';
String body = json.encode({
"api": apikey,
"user": userdata.toMap(),
"data": files,
"sessionid": sessionid
});
print("I AM HERE"); // this is called
await http.post(_base,
body: body, headers: {"Content-Type": "application/json"});
print("this is not called");
} catch (e) {
print("Error"); // no error
print(e);
}
}
答案 0 :(得分:3)
您必须return
,因为API().uploadData
返回的将来(我认为是空的)。如果不返回,则执行API().uploadData
,然后uploadData(Map args)
返回null
的值并立即从堆栈中弹出;孤立没有功能,只剩下微任务队列或事件队列,它将退出。
uploadData(Map args) {
print("uploading data"); // i see this in the logs
return API().uploadData(args["data"], args["user"], args["apikey"]);
}