在NetSuite的客户端脚本中处理逻辑时,屏幕冻结



你好,NetSuite开发人员。

按下按钮时,客户端脚本中将使用一个处理业务逻辑和通知的功能。

业务逻辑工作正常,流程没有问题,但按下Confirm通知中的OK按钮时,屏幕会冻结,直到所有流程结束。

这种现象似乎会让用户感觉到错误发生了!

我在下面发布我的代码。这是一个很长的代码,但如果你能告诉我检查后屏幕如何不会冻结,我将不胜感激。

dialog.alert({
title: 'NOTICE',
message: 'PROCESS START'
}).then(function (result) {
var isArrAggr = true;
var link = url.resolveScript({
scriptId: getParameterFromURL('script'),
deploymentId: getParameterFromURL('deploy')
});
var arrayParam = getParameterFromURL('array');
arrayParam = JSON.parse(arrayParam)
var std = new Date();
var c_year = std.getFullYear();
var c_month = std.getMonth();
var c_date = std.getDate();
var c_hour = std.getHours();
var c_minute = std.getMinutes();
var c_second = std.getSeconds();
std = c_year + ',' + c_month + ',' + c_date + ',' + c_hour + ',' + c_minute + ',' + c_second;
var array = [];
arrayParam.forEach(function (val) {
array.push(val)
});
for (var i = 0; i < array.length; i++) {
var ivNum = '';
const clSearch = search.create({
type: '----------(customRecord)',
filters: [
['----------(customField1)', search.Operator.IS, array[i].transaction_id]
],
columns: [
'----------(customField2)'
]
});
clSearch.run().each(function (result) {
ivNum = result.getValue('----------(customField2)');
});
if (ivNum === '') {
isArrAggr = false;
NS.jQuery.ajax({
url: link,
async: false,
type: 'POST',
data: {
array: JSON.stringify(array[i]),
rUserId: runtime.getCurrentUser().id,
std: std
},
dataType: 'text',
success: function (data) {
// 1: Success / 0: Failure
if (parseInt(data) === 1) {
NS.jQuery('#row' + i + ' > td:nth-child(10)').html("<span>OK</span>");
}
},
error: function (xhr, ajaxOptions, thrownError) {
NS.jQuery('#row' + i + ' > td:nth-child(10)').html("<b style='color: #ff0000 !important;'>Failed</b>");
}
});
}
}
// End for
if (isArrAggr)
dialog.alert({
title: 'NOTICE',
message: 'NO'
});
else
dialog.alert({
title: 'NOTICE',
message: 'PROCESS ENDED'
});
}).catch(function (reaseon) {
dialog.alert({title: 'CAUTION', message: 'PROCESSED FAILURE. n Cause: ' + reaseon})
});

Refactor to run"const clSearch=search.create"在承诺模式下。

您正在进行异步对话,但随后在承诺实现内部进行同步搜索。这很可能是造成瓶颈的原因。

最新更新