javascript 简单的vanilla JavaScript函数来发出AJAX请求。演示:http://jsfiddle.net/jsL14orc/9/embedded/result/

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 简单的vanilla JavaScript函数来发出AJAX请求。演示:http://jsfiddle.net/jsL14orc/9/embedded/result/相关的知识,希望对你有一定的参考价值。

/**
 * Simple function to make AJAX requests.
 * @param {array|string} urls 
 * @param {getDataCallback} each 
 */
function getData(urls, each) {
  /** Simple request
   * @returns {Promise}
   */
  if (!Array.isArray(urls)) return request(urls)

  /** Array parallel requests
   * @returns {Promise}
   */
  if (Array.isArray(urls) && each === undefined) return Promise.all(urls.map(url => request(url)))

  /** Array no-parallel requests
   */
  if (Array.isArray(urls) && typeof each === 'function') {
    let count = 0
    
    function recursive() {
      const url = urls[count]

      request(url)
        .catch(error => each(error.responseText, error.statusText, url, (count - 1)))
        .then(data => {
          count++
          each(data, false, url, (count - 1))
          if (count === urls.length) return ''
          recursive()
        })
    }
    recursive()
  }

  /**
   * Local request function.
   * @param {string} url
   * @returns {Promise}
   */
  function request(url) {
    return new Promise((resolve, reject) => {
      const request = new XMLHttpRequest
      request.open('GET', url, true)
      request.onreadystatechange = () => {
        if (request.readyState === 4)
          (request.status === 200) ?
            resolve(request.responseText) :
            reject(request)
      }
      request.send()
    })
  }
}

以上是关于javascript 简单的vanilla JavaScript函数来发出AJAX请求。演示:http://jsfiddle.net/jsL14orc/9/embedded/result/的主要内容,如果未能解决你的问题,请参考以下文章

vanilla javascript图像缩放滚动效果

使用 Vanilla Javascript 在表格中显示倒计时

没有 jquery 的 Django CSRF 丢失或不正确的 Ajax POST (Vanilla JavaScript)

Vanilla Javascript - 向元素 1 添加类并在单击元素 1 时从元素 2 中删除类

javascript 我的vanilla JavaScript插件的入门模板。

javascript 使用vanilla JavaScript爬上DOM树