gpt4 book ai didi

javascript - 我可以 "cancel"更新面板中发生的长时间运行的进程吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:36:47 25 4
gpt4 key购买 nike

我有一个更新面板,其中包含一个下拉列表,一旦页面完成加载,它将去并用最新数据填充下拉列表。数据抓取最多可能需要 3 分钟。我可以选择让用户“取消”请求并只使用最新版本的数据吗?

在更新面板中,我有一个未绑定(bind)的下拉列表(在设计时)。页面完成呈现后,我在 updatepanel 中调用 button.click 事件以获取数据:

private void RefreshDDL()
{
hidAction.Value = "";
ddlCampaigns.DataSource = myDataSource;
ddlCampaigns.DataTextField = "Value";
ddlCampaigns.DataValueField = "Key";
ddlCampaigns.DataBind();
ddlCampaigns.Visible = true;

pnlDetails.Attributes.CssStyle.Clear();
pnlPleaseWait.Visible = false;
btnOK.Enabled = true;
}

对象“myDataSource”是我创建的一个对象,它继承了IEnumarable 并且有一个公开的public List<DictionaryEntry>。这就是“键”和“值”发挥作用的地方。

调用构造函数时,它会转到网络服务并获取我要用于下拉列表的数据。此提取需要将近 3 分钟才能完成,然后将其存储到我的数据库中。然后我获取数据库表并填充 public List<DictionaryEntry> ,然后返回到更新面板进行消费。

架构为获取(其第三方)工作的方式是我为数据对象发出请求(通过网络服务)。它立即返回结果的唯一标识符。然后我使用服务中的另一种方法并传入唯一 ID 来检查数据的状态。我每 10 秒循环检查一次。一旦它返回“完成”消息,我就使用相同的唯一 ID 来获取实际数据:

private void RefreshList()
{
MyProxy proxyRequest = new MyProxy ();
List<string> myList= new List<string>();
if (UpdateNeeded())
{
ProgramManagement.ThirdPartyServiceApi.runReport report = new ProgramManagement.ThirdPartyServiceApi.runReport();
report.reportName = "MyData";
try
{
ProgramManagement.ThirdPartyServiceApi.runReportResponse response = proxyRequest.runReport(report);

while (!ReportComplete(response.@return))
{
System.Threading.Thread.Sleep(10000);
}
StoreList(GetReport(response.@return));
}
catch (SoapException ex)
{
if (ex.Message == TOO_MANY_REQUESTS)
{
//display a message maybe?
}
}
}

AddDataToList();

}

有什么办法可以中途停止这个过程吗?我想我想在 while 循环中放一个齿轮来阻止它。

感谢阅读。

最佳答案

可以调用.abortPostBack();取消Ajax请求

function CancelPostBack() {

var objMan = Sys.WebForms.PageRequestManager.getInstance();

if (objMan.get_isInAsyncPostBack())

objMan.abortPostBack();

}

详情看http://www.codedigest.com/Articles/ASPNETAJAX/125_Using_UpdateProgress_Control_Effectively.aspx

关于javascript - 我可以 "cancel"更新面板中发生的长时间运行的进程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6252288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com