【发布时间】:2019-02-04 13:25:09
【问题描述】:
我正在调用一个方法getaddress();inside viewmodel 来从 API 获取地址信息。但是在调试时,执行返回
var response = await client.PostAsync(base_url + "api_delivery_details", formcontent).ConfigureAwait(false);调用方法getaddress(),但稍后执行剩余部分。所以得到空结果。如何从第一次全部执行?
public async void Get_branch_products()
{
RestClient restClient = new RestClient();
getaddresses(); //this is the calling method
long delivery_fee1 = long.Parse(delivery_fee);
GrandTotal = Total + (Total * Tax) / 100 + delivery_fee1 ;
OnPropertyChanged("GrandTotal");
tax_amt = (Total * Tax) / 100;
OnPropertyChanged("tax_amt");
}
public async void getaddresses()
{
ind_vis = true;
OnPropertyChanged("ind_vis");
int user_id = (int)App.Current.Properties["user_id"];
RestClient restClient = new RestClient();
var result = await restClient.Get_address(user_id); //calling restAPI method
if (result.status == "success")
{
ind_vis = false;
OnPropertyChanged("ind_vis");
public async Task<Address> Get_address(int user_id)
{
var formcontent = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string,string>("user_id",user_id.ToString())
});
//returns from here// var response = await client.PostAsync(base_url + "api_delivery_details", formcontent).ConfigureAwait(false);
//executes later// var result = await response.Content.ReadAsStringAsync();
var Items = JsonConvert.DeserializeObject<Address>(result);
return Items;
}
【问题讨论】:
-
getaddresses() 应该返回 Task 并在 Get_branch_products 中等待。或使用 getaddresses(user_id).Result 并从方法中删除异步字
标签: xamarin xamarin.forms