最近做公司
QA 系统改造时,有这样的一个场景.
QA 系统中有些数据项需要从 JIRA 平台(一个国外项目与事务跟踪工具)中获取,JIRA 平台提
供了很完善的
Rest API.
现在的要求是
,在 QA 系统中提交项目时,必须先从 JIRA 平台获取很多的数据项,每次请求的
Rest API 都不一样,
同时必须等所有请求都成功返回数据后才能提交项目
.
因为之前对
Jquery Deferred 有过研究,发现这个场景用它来实现再合适不过了.
public
void
ProcessRequest(HttpContext context)
{
context.Response.ContentType =
"application/json"
;
string
action = context.Request.Form[
"Action"
];
//用 Thread.Sleep()模拟请求 Rest API 时的网络延迟
switch
(action)
{
case
"delay1Seconds"
:
Thread.Sleep(
2000
);
WriteSuccess(context, action,
"2"
);
break
;
case
"delay2Seconds"
:
Thread.Sleep(
1000
);
WriteSuccess(context, action,
"1"
);
break
;
case
"delay3Seconds"
:
Thread.Sleep(
3000
);
WriteSuccess(context, action,
"3"
);
break
;
default
:
break
;
}
}
public
void
WriteSuccess(HttpContext context,
string
action,
string
seconds)
{
//输出 JSON 结果
string
index = context.Request.Form[
"Index"
];
string
json =
"{\"flag\":0,\"msg\":"
+ seconds +
",\"Index\":"
+ index +
"}"
;
context.Response.Write(json);
}
数据服务端模拟好了之后
,接下来让我们来发出获取数据项的请求.