Как и @Iftah, установите encoding: null
.
Полный пример (меньше обработки ошибок):
request = require('request');
zlib = require('zlib');
request(url, {encoding: null}, function(err, response, body){
if(response.headers['content-encoding'] == 'gzip'){
zlib.gunzip(body, function(err, dezipped) {
callback(dezipped.toString());
});
} else {
callback(body);
}
});
Благодаря @ freedomn-m, который упомянул Promises в последующем комментарии к ответу, я натолкнулся на предыдущую статью, в которой обсуждается $ .when (). Done () в Как включить несколько js-файлов, используя jQuery $ Метод .getScript () . Это привело к сценарию, который работал:
<!DOCTYPE html>
<script src="/xyz/scripts/jquery-1.11.0.min.js"></script>
<script>
$.when(
$.getScript("myModule.js")
).done(function() {
console.log(wow);
console.log(wow());
});
</script>
<h1>Demo</h1>
getScript - это асинхронный метод , поэтому вам нужно обращаться к его переменным в обратном вызове следующим образом:
$.getScript( "ajax/test.js", function( data, textStatus, jqxhr ) {
console.log( data ); // Data returned
console.log( textStatus ); // Success
console.log( jqxhr.status ); // 200
console.log( "Load was performed." );
});
Your console.log (wow); был выполнен до полной загрузки скрипта.
$. getscript
https://api.jquery.com/jquery.getscript/
Это сокращенная Ajax-функция, которая эквивалентно:
blockquote>$.ajax({ url: url, dataType: "script", success: success });
, поэтому
$.getscript
выполняет асинхронный вызов, поэтому ваш код эквивалентен:
- $. getscript - начать загрузку сценария
- console.log (wow) - пока не могу найти его, так как скрипт еще не загружен
- ... завершить загрузку скрипта
Вы можете использовать обратный вызов выполнить код после загрузки скрипта:
$.getScript("myModule.js", function() { console.log(wow); console.log(wow()); });
Вызов getScript()
является асинхронной операцией, он не блокирует выполнение остальной части JavaScript. У вас есть два варианта:
1) Обернуть скрипт, требующий содержания getScript()
в $(document).ready()
, чтобы отложить выполнение до тех пор, пока все не загрузится.
2) Передать обратный вызов в качестве второго аргумента getScript
. Этот обратный вызов будет выполнен, если getScript()
завершится успешно.