Javascript 如何降低以下代码的治理成本

Javascript 如何降低以下代码的治理成本,javascript,netsuite,Javascript,Netsuite,您可以限制使用某些API(以及某些脚本)的频率。对于我所做的工作,我认为以下是适用的成本: nlapiLoadSearch:5 nlobjSearchResultSet.getSearch():10 这大约需要一个小时,但每次我的脚本(后面的)出错时,可能都是因为这个原因。我如何更改它以使其具有更少的治理成本 function walkCat2(catId, pad){ var loadCategory = nlapiLoadRecord("sitecategory", "14958149");

您可以限制使用某些API(以及某些脚本)的频率。对于我所做的工作,我认为以下是适用的成本: nlapiLoadSearch:5 nlobjSearchResultSet.getSearch():10 这大约需要一个小时,但每次我的脚本(后面的)出错时,可能都是因为这个原因。我如何更改它以使其具有更少的治理成本

function walkCat2(catId, pad){
var loadCategory = nlapiLoadRecord("sitecategory", "14958149");   
var dupRecords = nlapiLoadSearch('Item', '1951');   //load saved search
var resultSet = dupRecords.runSearch();   //run saved search
resultSet.forEachResult(function(searchResult)
    {
    var InterID=(searchResult.getValue('InternalID'));   // process- search 
var LINEINX=loadCategory.getLineItemCount('presentationitem'); 
loadCategory.insertLineItem("presentationitem",LINEINX); 
loadCategory.setLineItemValue("presentationitem", "presentationitem", LINEINX, InterID+'INVTITEM');  //--- Sets the line value.-jf
nlapiSubmitRecord(loadCategory , true);
    return true;                // return true to keep iterating 
    });                 
}

nlapiLoadRecord
使用5个单位,
nlapiLoadSearch
使用5个单位,那么实际上是
resultSet.forEachResult
使用了另外10个单位。最重要的是,您正在为每个搜索结果运行
nlapiSubmitRecord
,这将为每个结果多使用10个单位

在我看来,您对搜索结果所做的一切都是将行项目添加到类别记录中。在添加完所有行之前,无需提交记录。现在,您将在添加每一行后提交记录


在您的
forEachResult
调用之后移动
nlapiSubmitRecord
。这将使您的管理(尤其是您的执行时间)从每个搜索结果10个单位减少到10个单位。

nlapiLoadRecord
使用5个单位,
nlapiLoadSearch
使用5个单位,然后实际上是
resultSet.forEachResult
使用另外10个单位。最重要的是,您正在为每个搜索结果运行
nlapiSubmitRecord
,这将为每个结果多使用10个单位

在我看来,您对搜索结果所做的一切都是将行项目添加到类别记录中。在添加完所有行之前,无需提交记录。现在,您将在添加每一行后提交记录


在您的
forEachResult
调用之后移动
nlapiSubmitRecord
。这将使您的治理(尤其是您的执行时间)从每个搜索结果10个单位减少到10个单位。

不同的API有不同的相关成本[请参阅suiteanswers ID 10365]。此外,不同类型的脚本(用户、计划等)对总使用限制的最大限制也不同。[见suiteanswers ID 10481]

您的脚本消耗量应小于该限制,否则NetSuite将抛出错误。 您可以使用以下代码行来测量代码中不同点的剩余使用量。 nlapiLogExecution('AUDIT'、'Script Usage'、'remaininguage:'+nlapiGetContext().getremaininguage())


避免“超出最大使用量”异常的一种策略是将脚本类型更改为“计划脚本”,因为这具有最大限制。考虑到您的循环正在进行搜索,结果集可能会很大,甚至可能导致计划脚本超出其限制。在这种情况下,您可能希望在代码中引入检查点并使其可重入。这样,如果您看到nlapiGetContext().getremaininguage()小于阈值,您就可以将剩余的工作转移到后续的计划脚本中。

不同的API有不同的相关成本[请参见suiteanswers ID 10365]。此外,不同类型的脚本(用户、计划等)对总使用限制的最大限制也不同。[见suiteanswers ID 10481]

您的脚本消耗量应小于该限制,否则NetSuite将抛出错误。 您可以使用以下代码行来测量代码中不同点的剩余使用量。 nlapiLogExecution('AUDIT'、'Script Usage'、'remaininguage:'+nlapiGetContext().getremaininguage())


避免“超出最大使用量”异常的一种策略是将脚本类型更改为“计划脚本”,因为这具有最大限制。考虑到您的循环正在进行搜索,结果集可能会很大,甚至可能导致计划脚本超出其限制。在这种情况下,您可能希望在代码中引入检查点并使其可重入。这样,如果您看到nlapiGetContext().GetRemaininguage()小于阈值,则会将剩余的工作卸载到后续的计划脚本。

看起来nlapiSubmitRecord也会消耗治理点类似nlapiSubmitRecord的代码也会消耗治理点,这非常有帮助。非常感谢。这很有帮助。非常感谢。非常感谢。这当然是有帮助的。我猜有一种方法可以处理更高级的治理脚本。谢谢!这当然是有帮助的。我猜想有一种方法可以处理更高级的治理脚本。