使用Pagemethods时的页面生命周期

时间:2016-12-13 19:09:07

标签: javascript c# pagemethods

我需要从Javascript中调用一些C#函数(将一些值保存到数据库中),因此我使用多个PageMethods来执行此操作。我想在完成所有这些操作后向用户显示警告。但是我无法理解在Javascript中执行脚本的顺序。

所以这就是我所拥有的(简化):

var savedchanges = false;

function saveFields(){
    for (var i = 0; i < polygons.length; i++) {
        alert("Just before saving polygon");
        PageMethods.saveCoordinates(arguments, onpolygonsaved, onerror);
    }
    alert("After everything");

    if (savedchanges == true) {
        alert("The changes have been saved");
    }
}

function onpolygonsaved(result){
    savedchanges = true;
    alert("OnPolygonsaved");
    for (var i = 0; i < points.length; i++) {
        if (points[0].polygonnum == result[0]) {
            PageMethods.saveSamplePoints(arguments, onpointsaved, onerror);
        }
    }
}

function onpointsaved(pointresult){
    savedchanges = true;
    alert("OnPointSaved");
}

这样做的方式是,有'n'个多边形,并且在每个多边形内部,有一定数量的点。最初,我认为这是它的进展:

PageMethods.saveCoordinates - &gt; onpolygonsaved - &gt; PageMethods.saveSamplePoints - &gt; onpointsaved - &gt;返回saveFields函数。

因此,如果我根据savedchanges的值在saveFields()中的pagemethod之后发出警报,它将在保存所有点之后向用户显示警告。

但它并没有这样的方式。所以我在不同的位置发出警报,以检查它是如何进展的。假设有两个多边形,这是警报出现的顺序:

  1. 在保存多边形
  2. 之前
  3. 在保存多边形
  4. 之前
  5. OnPolygonsaved
  6. 一切都
  7. OnPolygonsaved
  8. OnPointSaved(对于第一个多边形的每个点)
  9. 更改已保存
  10. OnPointSaved(对于第二个多边形的每个点)
  11. 事实上,如果我不想象事情,每次尝试时这个顺序都不同,即使每种情况下多边形/样本点的数量相同。

    为什么会发生这种情况,以及如何做我想做的事情?

0 个答案:

没有答案