我有一个根据我的监视器类型的值绘制不同弹出窗口的函数。如果我的monitorType = 22
我需要发送一个ajax请求,并根据响应继续绘图。但问题是我无法在继续之前得到回应。
这是我职能的一部分:
var str = '<div id="thresholdsHeader" style="display:none;">';
str += '<div id="alertRule"></div>';
if(monitorTypeId == 22 ){
var parametrs = {
monitorId: module.info.id,
typeId: module.info.monitorTypeId
};
sendGetAPIRequest(Framework.customMonitorURL, "getMonitorDynamicMetrics", parametrs, ThresholdManager.getDynamicThresholdsRequest);
if(dynResponse.json.length == 0){
str += '<input type="button" designstyle="green" onclick="ThresholdManager.addThresholdDialog()" style="float:right;" value="'+Framework.Lang.addThreshold+'"/>';
}else{
str += '<input type="button" id="trehsoldsGreenBut" designstyle="green" onclick="ThresholdManager.createThresholds(event)" style="float:right;" value="'+Framework.Lang.addThreshold+'"/><div class="dashboardIcons addNewRuleArrow" style="left: '+(CURRENT_LANGUAGE == 'en'? '460':(CURRENT_LANGUAGE == 'de'?'363':'355'))+'px;top: 8px;"></div>';
}
}else {
str += '<input type="button" designstyle="green" onclick="ThresholdManager.addThresholdDialog()" style="float:right;" value="'+Framework.Lang.addThreshold+'"/>';
}
str += '</div><div id="thresholdContainer"></div>';
这是我的请求处理程序:
getDynamicThresholdsRequest: function(response){
dynResponse = response;
},
如果我通过调试变慢,它可以正常工作。
答案 0 :(得分:0)
你可以尝试如下: -
var str = '<div id="thresholdsHeader" style="display:none;">';
str += '<div id="alertRule"></div>';
if(monitorTypeId == 22 ){
var parametrs = {
monitorId: module.info.id,
typeId: module.info.monitorTypeId
};
sendGetAPIRequest(Framework.customMonitorURL, "getMonitorDynamicMetrics", parametrs, ThresholdManager.getDynamicThresholdsRequest);
setTimeout( function(){
if(dynResponse.json.length == 0){
str += '<input type="button" designstyle="green" onclick="ThresholdManager.addThresholdDialog()" style="float:right;" value="'+Framework.Lang.addThreshold+'"/>';
}else{
str += '<input type="button" id="trehsoldsGreenBut" designstyle="green" onclick="ThresholdManager.createThresholds(event)" style="float:right;" value="'+Framework.Lang.addThreshold+'"/><div class="dashboardIcons addNewRuleArrow" style="left: '+(CURRENT_LANGUAGE == 'en'? '460':(CURRENT_LANGUAGE == 'de'?'363':'355'))+'px;top: 8px;"></div>';
}
}else {
str += '<input type="button" designstyle="green" onclick="ThresholdManager.addThresholdDialog()" style="float:right;" value="'+Framework.Lang.addThreshold+'"/>';
}
str += '</div><div id="thresholdContainer"></div>';},3000)
使用
SetTimeOut功能
并延迟执行。
答案 1 :(得分:0)
如果没有,我建议它重新组织你的代码流程。
PS:我正在对您提供的有限信息进行疯狂尝试。
sendGetAPIRequest(Framework.customMonitorURL, "getMonitorDynamicMetrics", parametrs, ThresholdManager.getDynamicThresholdsRequest, function(resp) {
//add all the logic to be added on response here
});