Параметры синхронизации JavaScript

Если это форма окна Datagrid, вы можете использовать приведенный ниже код для форматирования datetime для столбца

dataGrid.Columns[2].DefaultCellStyle.Format = "MM/dd/yyyy HH:mm:ss";

EDIT:

Кроме этого, если вам нужно datetime в формате AM / PM, вы можете использовать приведенный ниже код

dataGrid.Columns[2].DefaultCellStyle.Format = "MM/dd/yyyy hh:mm:ss tt";
10
задан Artem Barger 10 May 2009 в 09:43
поделиться

5 ответов

Я нашел решение своей проблемы. Я должен сказать, что это не так идеально, как я искал, но пока это работает, и я думаю об этом скорее как о временной работе.

$.post( "url1", function( data)
{
     // do some computation on data and then
     setSomeValue( data);
});

var setSomeValue = ( function()
{
    var cache = {};
    return function( data)
    {
        if ( cache[data] == "updating")
        {
             setTimeout( function(){ setSomeValue( data);}, 100);
             return;
        }
        if ( !cache[date])
        {
             cache[date] = updating;
             $.post( "url2", function( another_data)
             {
                  //make heavy computation on another_data
                  cache[data] = value;
                  // update the UI with value
             });
        }
        else
        {
             //update the UI using cached value
        }
    }
})();
4
ответ дан 3 December 2019 в 16:30
поделиться

Я могу предложить возможное решение, но не видя кода ... не совсем уверен, что вы делаете, но нет причин, по которым вы не могли этого сделать.

Базовый код в jQuery: (не тестировался и сокращался ... но я делал то же самое)

var needAllThese = {};

$(function(){

      $.ajax("POST","/somepage.aspx",function(data) {
          needAllThese.A = "VALUE";
      });

      $.ajax("POST","/somepage2.aspx",function(data) {
          needAllThese.B = "VALUE";
      });

      $.ajax("POST","/somepage3.aspx",function(data) {
          needAllThese.C = "VALUE";
      });

      startWatching();
});

function startWatching() {
   if (!haveEverythingNeeded()) {
       setTimeout(startWatching,100);
       return;
   }
   everythingIsLoaded();
}

function haveEverythingNeeded() {
    return needAllThese.A && needAllThese.B && needAllThese.C;
}

function everythingIsLoaded() {
   alert("Everything is loaded!");
}

РЕДАКТИРОВАТЬ: (re: ваш комментарий)

Вы ищете обратные вызовы, точно так же, как это сделал бы jQuery.

   var cache = {};

   function getSomeValue(key, callback) {
       if (cache[key]) callback( cache[key] );

       $.post( "url",  function(data) {
           setSomeValue(key,data);
           callback( cache[key] );
       }); 
   }

   function setSomeValue(key,val) {
        cache[key] = val;
   }

   $(function(){       
        // not sure you would need this, given the code above
        for ( var i = 0; i < some_length; ++i)  {
            $.post( "url", function(data){ 
                setSomeValue("somekey",data); 
            });
        }

        getSomeValue("somekey",function(val){            
             $("#element").txt( val );              
        };            
    });
]
8
ответ дан 3 December 2019 в 16:30
поделиться

Javascript по своей сути однопоточный, по крайней мере, для нормальной среды браузера. Никогда не будет двух одновременных выполнений скриптов, обращающихся к одному и тому же документу. (новые рабочие потоки Javascript могут быть здесь исключением, но они вообще не предназначены для доступа к документам, а только для связи посредством передачи сообщений).

6
ответ дан 3 December 2019 в 16:30
поделиться

Да, вы можете сделать ваши xmlHttpRequests синхронными, в не-IE установите для параметра асинхронности значение false в методе open, в браузерах IE сделайте то же самое с параметром bAsync.

Возможно, вы захотите каким-то образом связать свои запросы. Создайте стек очереди и отправляйте запросы по мере продвижения по очереди.

3
ответ дан 3 December 2019 в 16:30
поделиться

Во-первых, важно знать, что все текущие реализации JS являются однопоточными, поэтому мы не обсуждаем условия гонки и синхронизацию в том контексте, в котором она обычно используется.

Как сторона обратите внимание, браузеры теперь вводят рабочие потоки, которые разрешают параллелизм в JS, но пока это не так.

В любом случае, вы все еще сталкиваетесь с проблемами с тем, какие данные вы ожидаете получить обратно из асинхронных вызовов, и у вас нет гарантия того, в каком порядке вы получите вещи.

JS дает вам очень хорошее решение этой проблемы с помощью обратных вызовов. Для каждого отправляемого асинхронного события прикрепите к нему соответствующую функцию обратного вызова, которая будет правильно обрабатывать событие. Синхронизация в вашем понимании должна происходить там.

3
ответ дан 3 December 2019 в 16:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: