Skip to content

Instantly share code, notes, and snippets.

@lucifiel0121
Last active March 4, 2019 08:07
Show Gist options
  • Save lucifiel0121/73b1e9569fd0c75ef1a5c5d21a94ab49 to your computer and use it in GitHub Desktop.
Save lucifiel0121/73b1e9569fd0c75ef1a5c5d21a94ab49 to your computer and use it in GitHub Desktop.
JS Bin// Exercise 34: HTTP requests , Step 2 : JSONP as Observable
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/4.0.6/rx.all.js"></script>
<input id="textbox" />
<script id="jsbin-javascript">
"use strict";
var Observable = Rx.Observable;
var textbox = document.getElementById('textbox');
var keypresses = Observable.fromEvent(textbox, 'keypress');
// subscript
keypresses.forEach(function (e) { return console.log(e.keyCode); });
function getWikipediaSearchResults(term) {
return Observable.create(function forEach(Observer) {
var cancelled = false;
var url = 'https://zh.wikipedia.org/w/api.php?action=opensearch&format=json&search=' + encodeURIComponent(term) + '&callback=?';
$.getJSON(url, function (data) {
if (!cancelled) {
Observer.onNext(data);
Observer.onCompleted();
}
});
return function dispose() {
cancelled = true;
};
});
}
getWikipediaSearchResults("Terminator");
getWikipediaSearchResults("Terminator").forEach(function (results) { return console.log(results); });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNiaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQztBQUMvQixJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWpELElBQUksVUFBVSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBRSxDQUFDO0FBRTdELFlBQVk7QUFDWixVQUFVLENBQUMsT0FBTyxDQUFFLFVBQUEsQ0FBQyxJQUFJLE9BQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQXRCLENBQXNCLENBQUUsQ0FBQTtBQU9qRCxtQ0FBbUMsSUFBSTtJQUNyQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBRSxpQkFBaUIsUUFBUTtRQUNqRCxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxHQUFHLEdBQUcsMEVBQTBFLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDO1FBQ2hJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFDLFVBQVMsSUFBSTtZQUN6QixFQUFFLENBQUEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFBLENBQUM7Z0JBQ2IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEIsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQztZQUNMLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDbkIsQ0FBQyxDQUFDO0lBRUosQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBR0QseUJBQXlCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFeEMseUJBQXlCLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFFLFVBQUEsT0FBTyxJQUFJLE9BQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBcEIsQ0FBb0IsQ0FBRyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsidmFyIE9ic2VydmFibGUgPSBSeC5PYnNlcnZhYmxlO1xudmFyIHRleHRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dGJveCcpO1xuXG52YXIga2V5cHJlc3NlcyA9IE9ic2VydmFibGUuZnJvbUV2ZW50KCB0ZXh0Ym94LCAna2V5cHJlc3MnICk7XG5cbi8vIHN1YnNjcmlwdFxua2V5cHJlc3Nlcy5mb3JFYWNoKCBlID0+IGNvbnNvbGUubG9nKGUua2V5Q29kZSkgKVxuXG5cblxuXG5cblxuZnVuY3Rpb24gZ2V0V2lraXBlZGlhU2VhcmNoUmVzdWx0cyh0ZXJtKXtcbiAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKCBmdW5jdGlvbiBmb3JFYWNoKE9ic2VydmVyKXtcbiAgICB2YXIgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgdmFyIHVybCA9ICdodHRwczovL3poLndpa2lwZWRpYS5vcmcvdy9hcGkucGhwP2FjdGlvbj1vcGVuc2VhcmNoJmZvcm1hdD1qc29uJnNlYXJjaD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHRlcm0pICsgJyZjYWxsYmFjaz0/JztcbiAgICAkLmdldEpTT04odXJsLGZ1bmN0aW9uKGRhdGEpe1xuICAgICAgaWYoIWNhbmNlbGxlZCl7XG4gICAgICAgIE9ic2VydmVyLm9uTmV4dChkYXRhKTtcbiAgICAgICAgT2JzZXJ2ZXIub25Db21wbGV0ZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmdW5jdGlvbiBkaXNwb3NlKCl7XG4gICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgIH07XG5cbiAgfSk7XG59XG5cblxuZ2V0V2lraXBlZGlhU2VhcmNoUmVzdWx0cyhcIlRlcm1pbmF0b3JcIik7XG5cbmdldFdpa2lwZWRpYVNlYXJjaFJlc3VsdHMoXCJUZXJtaW5hdG9yXCIpLmZvckVhY2goIHJlc3VsdHMgPT4gY29uc29sZS5sb2cocmVzdWx0cykgICkiXX0=
</script>
<script id="jsbin-source-javascript" type="text/javascript">
var Observable = Rx.Observable;
var textbox = document.getElementById('textbox');
var keypresses = Observable.fromEvent( textbox, 'keypress' );
// subscript
keypresses.forEach( e => console.log(e.keyCode) )
function getWikipediaSearchResults(term){
return Observable.create( function forEach(Observer){
var cancelled = false;
var url = 'https://zh.wikipedia.org/w/api.php?action=opensearch&format=json&search=' + encodeURIComponent(term) + '&callback=?';
$.getJSON(url,function(data){
if(!cancelled){
Observer.onNext(data);
Observer.onCompleted();
}
});
return function dispose(){
cancelled = true;
};
});
}
getWikipediaSearchResults("Terminator");
getWikipediaSearchResults("Terminator").forEach( results => console.log(results) )</script></body>
</html>
"use strict";
var Observable = Rx.Observable;
var textbox = document.getElementById('textbox');
var keypresses = Observable.fromEvent(textbox, 'keypress');
// subscript
keypresses.forEach(function (e) { return console.log(e.keyCode); });
function getWikipediaSearchResults(term) {
return Observable.create(function forEach(Observer) {
var cancelled = false;
var url = 'https://zh.wikipedia.org/w/api.php?action=opensearch&format=json&search=' + encodeURIComponent(term) + '&callback=?';
$.getJSON(url, function (data) {
if (!cancelled) {
Observer.onNext(data);
Observer.onCompleted();
}
});
return function dispose() {
cancelled = true;
};
});
}
getWikipediaSearchResults("Terminator");
getWikipediaSearchResults("Terminator").forEach(function (results) { return console.log(results); });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNiaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQztBQUMvQixJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWpELElBQUksVUFBVSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBRSxDQUFDO0FBRTdELFlBQVk7QUFDWixVQUFVLENBQUMsT0FBTyxDQUFFLFVBQUEsQ0FBQyxJQUFJLE9BQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQXRCLENBQXNCLENBQUUsQ0FBQTtBQU9qRCxtQ0FBbUMsSUFBSTtJQUNyQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBRSxpQkFBaUIsUUFBUTtRQUNqRCxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxHQUFHLEdBQUcsMEVBQTBFLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDO1FBQ2hJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFDLFVBQVMsSUFBSTtZQUN6QixFQUFFLENBQUEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFBLENBQUM7Z0JBQ2IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEIsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQztZQUNMLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDbkIsQ0FBQyxDQUFDO0lBRUosQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBR0QseUJBQXlCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFeEMseUJBQXlCLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFFLFVBQUEsT0FBTyxJQUFJLE9BQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBcEIsQ0FBb0IsQ0FBRyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsidmFyIE9ic2VydmFibGUgPSBSeC5PYnNlcnZhYmxlO1xudmFyIHRleHRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dGJveCcpO1xuXG52YXIga2V5cHJlc3NlcyA9IE9ic2VydmFibGUuZnJvbUV2ZW50KCB0ZXh0Ym94LCAna2V5cHJlc3MnICk7XG5cbi8vIHN1YnNjcmlwdFxua2V5cHJlc3Nlcy5mb3JFYWNoKCBlID0+IGNvbnNvbGUubG9nKGUua2V5Q29kZSkgKVxuXG5cblxuXG5cblxuZnVuY3Rpb24gZ2V0V2lraXBlZGlhU2VhcmNoUmVzdWx0cyh0ZXJtKXtcbiAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKCBmdW5jdGlvbiBmb3JFYWNoKE9ic2VydmVyKXtcbiAgICB2YXIgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgdmFyIHVybCA9ICdodHRwczovL3poLndpa2lwZWRpYS5vcmcvdy9hcGkucGhwP2FjdGlvbj1vcGVuc2VhcmNoJmZvcm1hdD1qc29uJnNlYXJjaD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHRlcm0pICsgJyZjYWxsYmFjaz0/JztcbiAgICAkLmdldEpTT04odXJsLGZ1bmN0aW9uKGRhdGEpe1xuICAgICAgaWYoIWNhbmNlbGxlZCl7XG4gICAgICAgIE9ic2VydmVyLm9uTmV4dChkYXRhKTtcbiAgICAgICAgT2JzZXJ2ZXIub25Db21wbGV0ZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmdW5jdGlvbiBkaXNwb3NlKCl7XG4gICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgIH07XG5cbiAgfSk7XG59XG5cblxuZ2V0V2lraXBlZGlhU2VhcmNoUmVzdWx0cyhcIlRlcm1pbmF0b3JcIik7XG5cbmdldFdpa2lwZWRpYVNlYXJjaFJlc3VsdHMoXCJUZXJtaW5hdG9yXCIpLmZvckVhY2goIHJlc3VsdHMgPT4gY29uc29sZS5sb2cocmVzdWx0cykgICkiXX0=
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment