Добавить текст в файл и сразу увидеть его в файловой системе [duplicate]

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

Итак, если вы используете Angular, React или любые другие фреймворки, которые делают два способа связывания данных, эта проблема просто исправлена ​​для вас, поэтому простым языком ваш результат undefined на первом этапе, поэтому вы получили result = undefined до получения данных, а затем, как только вы получите результат , он будет обновляться и присваиваться новому значению, которое отвечает на ваш вызов Ajax ...

Но как вы можете сделать это в чистом javascript или jQuery, например, как вы задали этот вопрос?

Вы можете использовать обратный вызов, обещание и недавно наблюдаемое, чтобы обрабатывать его для вас, например, в обещаниях мы имеем некоторые функции, такие как success () или then (), которые будут выполняться, когда ваши данные будут готовы для вас, с функцией обратного вызова или подписки на наблюдаемые.

Например, в вашем случае, в котором вы используете jQuery, вы можете сделать что-то вроде этого:

$(document).ready(function(){
    function foo() {
        $.ajax({url: "api/data", success: function(data){
            fooDone(data); //after we have data, we pass it to fooDone
        }});
    };

    function fooDone(data) {
        console.log(data); //fooDone has the data and console.log it
    };

    foo(); //call happens here
});

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

25
задан rink.attendant.6 1 December 2014 в 15:18
поделиться

4 ответа

28
ответ дан Chandra Sekhar 26 August 2018 в 09:52
поделиться

flush() просто гарантирует, что любые буферизованные данные записываются на диск (в данном случае - в общем случае, сбрасываются через любой канал IO, который вы используете). После этого вы можете записать в поток (или запись).

close() очищает данные и указывает, что данных больше нет . Он закрывает любые дескрипторы файлов, сокеты или что угодно. Вы не можете больше писать в поток (или записывать).

Обратите внимание, что без вызовов flush() данных можно записывать на соответствующий канал ввода-вывода - это просто, что некоторые данные могут быть буферизованы .

close() обычно также вызывает flush(), но мне недавно было указано, что в некоторых реализациях JDK любые исключения выброшенные промывкой как часть закрытия, проглатываются: (

50
ответ дан Jon Skeet 26 August 2018 в 09:52
поделиться

flush(): Чтобы очистить выходной поток, используйте метод void flush() класса DataOutputStream. Этот метод внутренне вызывает метод flush() базового класса OutputStream, который заставляет в буфере записывать любые буферизованные выходные байты.

close(): Обычно он закрывает поток, соединение, сокет.

См. flush и close пример

3
ответ дан rink.attendant.6 26 August 2018 в 09:52
поделиться
3
ответ дан shift66 26 August 2018 в 09:52
поделиться
Другие вопросы по тегам:

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