background image

最近做公司

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);
        }
数据服务端模拟好了之后

,接下来让我们来发出获取数据项的请求.