Поиск Ajax стиля Facebook

Так, ключевая вещь помнить состоит в том, что указатель является просто переменной размера слова, это вводится для разыменования. Это означает, что, является ли это пустотой *, интервал *, долго долго **, это - все еще просто измеренная переменная слова. Различие между этими типами - то, что компилятор рассматривает разыменованным типом. Просто для уточнения слово измерило ширину средств виртуального адреса. Если Вы не знаете то, что это означает, просто помните на 64-разрядной машине, указатели составляют 8 байтов, и на 32-разрядной машине, указатели составляют 4 байта. Понятие адреса СУПЕР важно в понимании указателей. Адрес является числом, способным к однозначному определению определенного местоположения в памяти. Все в памяти имеет адрес. В наших целях мы можем сказать, что каждая переменная имеет адрес. Это не обязательно всегда верно, но компилятор позволяет нам принять это. Сам адрес является детализированным байтом, означать 0x0000000 определяет начало памяти, и 0x00000001 составляет один байт в память. Это означает, что путем добавления одного к указателю, мы перемещаем один байт вперед в память. Теперь, позволяет, берут массивы. Если Вы создаете массив типа quux, это - 32 большие элемента, он охватит с начала, он - выделение, к началу он - выделение плюс 32*sizeof (quux), так как каждая ячейка массива является sizeof (quux) большой. Так, действительно когда мы определяем элемент массива с массивом [n], это - просто синтаксический сахар (стенография) для * (array+sizeof (quux) *n). Адресная арифметика с указателями действительно просто изменяет адрес, к которому Вы обращаетесь, который является, почему мы можем реализовать strlen с

while(*n++ != '\0'){
  len++;
}

, так как мы просто сканируем вперед, байт байтом, пока мы не поражаем нуль. Надежда, которая помогает!

6
задан Shadi Almosri 14 October 2009 в 19:00
поделиться

3 ответа

метод, о котором вы говорите, называется "Debouncing"

У меня обычно есть функция "Debounce" внизу всех моих скриптов

var debounce=function(func, threshold, execAsap) {
    var timeout;
    return function debounced () {
        var obj = this, args = arguments;
        function delayed () {
            if (!execAsap)
                func.apply(obj, args);
            timeout = null; 
        };
        if (timeout)
            clearTimeout(timeout);
        else if (execAsap)
            func.apply(obj, args);
        timeout = setTimeout(delayed, threshold || 100); 
    }; 
};

И затем всякий раз, когда я делаю что-нибудь, извлеките выгоду из противодействия, я могу использовать его в общем случае

Таким образом, ваш код будет переписан как

$("#s").keyup(debounce(function() {
    var searchbox = $(this).val();
    var dataString = 's='+ searchbox;
    if(searchbox!='') {
        $.ajax({
                type: "POST",
                url: "/livesearch.php",
                data: dataString,
                cache: false,
                success: function(html){
                        $("#display").html(html).show();
                }
        });
    } else {return false; }  
}
,350 /*determines the delay in ms*/
,false /*should it execute on first keyup event, 
       or delay the first event until 
       the value in ms specified above*/
));
10
ответ дан 8 December 2019 в 17:23
поделиться

Другой вариант - начать поиск после 2/3 символов. Мне не нравится ждать 1 секунду перед каждым запросом. Также попробуйте отправить на сервер очень мало данных, что также может ускорить запросы и ответы.

2
ответ дан 8 December 2019 в 17:23
поделиться

У вас может быть объект JSON, который сидит где-нибудь и ищет его, вместо того, чтобы искать в базе данных несколько раз. Это не принесет слишком большого навеса, если это не список из 1000 друзей или что-то в этом роде.

2
ответ дан 8 December 2019 в 17:23
поделиться
Другие вопросы по тегам:

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