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
,这个还能接受:数组是object
,object
的boolean
值都是true
,只有null
的boolean
值是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`属性中