Promise.cs
public class Promise
{
object successData = null;
public Promise(Action<Action<object>> executor)
{
executor(Upload);
}
private void Upload(object value)
{
this.successData = JsonConvert.SerializeObject(new { success = true, data = value });
}
public Promise Then(Func<object, object> successAction)
{
var data = successAction(this.successData);
return new Promise(Upload =>
{
Upload(data);
});
}
}
Program.cs
internal class Program
{
class HttpModel
{
public bool success { get; set; }
public ApiData data { get; set; }
}
class ApiData
{
public int Id { get; set; }
public List<string> DataList { get; set; }
}
static void Main(string[] args)
{
var chainFinalResult = new Promise((Upload) =>
{
ApiData data = new ApiData()
{
Id = 1,
DataList = new List<string>() { "1", "11", "111" }
};
Console.WriteLine($"原始数据:{JsonConvert.SerializeObject(data)}");
Upload(data);
}).Then((res) =>
{
Console.WriteLine($"第一次调用返回数据:{res}");
HttpModel model = JsonConvert.DeserializeObject<HttpModel>((string)res);
model.data.Id = 2;
model.data.DataList.AddRange(new string[] { "2", "22", "222" }.ToList());
Console.WriteLine($"处理后的数据:{JsonConvert.SerializeObject(model.data)}");
return model.data;
}).Then(res =>
{
Console.WriteLine($"最终结果:{JsonConvert.SerializeObject(res)}");
return null;
});
}
}