Snippets

sironekotoro Wrap the XMLHttpRequest object with Promise

Created by sironekotoro last modified
{"first": "yamada", "last": "taro", "age": 20}
"use strict";
// nodeで動かす時はnode用XMLHhttpRequestが必要
// in use Node environment,install for node version XMLHttpRequest
// https://www.npmjs.com/package/xmlhttprequest
function say(_) { console.log(_); }

let url = "https://bitbucket.org/!api/2.0/snippets/sironekotoro/gn477/ba9ff5d1db785867820fc76d1ab8c710f3a50488/files/JSON";
// Atlassian Snipet
// {"first": "yamada", "last": "taro", "age": 20}
http("get", url)
    .then(function(data) {
        say(data.first);
    })
    .catch(function(error) {
        console.error(error);
    });


function http(method, url, data) {
    return new Promise(function(resolve, reject) {
        let XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
        let xhr = new XMLHttpRequest();
        xhr.addEventListener("load", function(event) {
            let result = xhr.responseText ? JSON.parse(xhr.responseText) : undefined;
            if (xhr.status === 200) {
                resolve(result);
            } else {
                reject(result || xhr.statusText);
            }
        });
        xhr.addEventListener("error", function(event) {
            reject(xhr.statusText);
        });
        xhr.open(method, url);
        xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
        xhr.send(JSON.stringify(data));
    });
}

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.