//

作者:lofayo    发布于:

7、网络断开后ajax请求的失败

竟然忽略了一个这么重要的问题:我们用ajax向服务器请求数据,请求成功后存储在浏览器数据库webSql IndexedDB以备断网时使用。可是如果断网了,ajax请求必定失败报错,程序不能运行,但其实所需的数据早已都存在数据库里,直接使用即可。其实,也是程序的一个高性能问题,得到了东西,就没必要每次再重复执行了。提高性能准则:时常判断,不要重复已经存在结果的运行。没有才做,有了就不做。

分析理想情况: 一次ajax请求,将数据都存储在浏览器数据库,仅仅只需要一次ajax成功的请求。每次打开页面,动态渲染页面,用到的数据都是从数据库中取

但是好像多虑了: 上面这样的确减少ajax的请求次数,而且动态代码的添加也是从浏览器数据库取得的数据。但是没网了支付设备怎么付费,又说回来,这样的确可以提高效率,因为数据从数据库请求来的,断网下依然可用

8、这个竟然输出了定时器的个数

  var result1 = setTimeout(function() {

  }, 3000);
  console.log(setTimeout(function() {

  }, 3000));    //2
  console.log(setTimeout(function() {

  }, 3000));    //3

9、请求响应模式竟然还有这样的问题:函数申明与变量申明都会提前,但是有可能赋值需要延后

var result = getObjectStore('SyncCategory');

虽然这句话在所有程序的最前面,但是后面这个赋值的函数执行getObjectStore('SyncCategory')是基于请求响应模式的,该函数返回的值会有延后。

如果getObjectStore('SyncCategory')没有返回值(无论函数里),result = undefined;

如果getObjectStore('SyncCategory')result = undefined;

10、订单号码问题:唯一性、多人同时操作时的唯一性、需要访问数据库吗??

11、不要把return语句的功能想得太多了, 它只是:返回一个值,结束后面代码的执行。它更本不可能等待请求响应结果后再返回,正常语句,先于‘请求响应模式’的执行

// 用游标对表全部检索
function getObjectStore(osName) {
  var result = [];
  var request = indexedDB.open('pageData', 1);

  request.onsuccess = function() {
      let db = this.result;
      var trans = db.transaction([osName], 'readwrite');
      var os = trans.objectStore([osName]);

      // 游标遍历表全部数据(循环)
      var cursorReq = os.openCursor();
      console.log(cursorReq);
      cursorReq.onsuccess = function() {
          if (this.result) {
              result.push(this.result.value);
              this.result.continue();
          }
      }
  }

  request.onerror = function() {
      alert('初始化所有表失败:' + this.error);
  }

  return result;
  }

这个函数返回结果永远为空数组,不会等待请求响应后的结果,只是在浏览器console.log(result)有点怪:虽然为空,但下面有值

12、之前的逻辑判断全错

我太渴望一种普遍适用的准则解释这一切:

console.log(NaN == NaN);
//false

这个好理解:NaN(not a number),不是一个数字,还可以是很多其它东西,所以不相等

console.log('' == '');
//true

这个也还好理解:空字符等于 空字符,如果不相等,它还能咋地?上天不成?

但下面这个就有点逆天了

console.log([] == []);
//false

空数组不等于空数组,你是想咋地?好像真的上天了,既然如此,我也没辙

曾经还以为,空数组boolean值是false,但实际是true,这个还能接受:数组是objectobjectboolean值都是true,只有nullboolean值是false

console.log(!![]);
//true

后记: 虽然这些知识都比较小众,但是却决定了逻辑判断,选择了程序的走向,所以还是弄清楚为好。这么多东西肯定不可能全凭记忆,我太渴望一种普遍使用的准则来判断(准则肯定是有的,想想设计者的初衷),我不要:试验、根据结果作总结、推翻总结、再试验、再总结、再推翻总结、、、,这种大浪淘沙的过程太让人崩溃了。

静候您的指教:、、、

13、玩电风扇把鼠标玩坏了

这是一种怎样的神奇,电脑和风扇的插头在一排,通过开关风扇,鼠标的闪光跟着一起变化,希望找出规律,玩了几次后,鼠标竟然神奇的坏了(闪光依然亮着,但是不能移动光标)

14、跨域请求

XMLHttpRequest cannot load http://pay.pospi.com/Api/Pay/Refund. 
Response to preflight request doesn't pass access control check: 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'null' is therefore not allowed access. The response had HTTP status code 405.

15、数组和json联系:都能循环,但是却不能在一个循环里将其联系

16、很多东西能放在一个.html里,就尽量放在一个.html里,因为多个页面的跳转后涉及到数据的传递就会很麻烦:跳转之前保存数据到数据库,跳转至后,又要从数据库里取数据填充页面。

17、这是一种怎样的css选择器

.mui-bar-tab~.mui-content



18、通过`.val()`设置的值能显示在,显示栏中,但不能显示在`vlaue`属性中
format_list_numbered

(无)

  1. 1. 12、之前的逻辑判断全错
  2. 2. 13、玩电风扇把鼠标玩坏了
  3. 3. 14、跨域请求
vertical_align_top

Copyright © 2017 每天寻求一点变化

Powered by Hexo & Theme - Vateral