踩坑日记[2023]

1.1k 词

JavaScript

[2023]方法使用jQuery.ajax获取数据,同步致假死,异步无法获取数据

在一个方法里使用ajax从后端获取数据,可以使用同步(async:false)

1
2
3
4
5
6
7
8
9
10
11
12
function getTemperature() {
var temperature;
$.ajax({
async: false,
type: 'GET',
url: '',
success: function (responseData) {
temperature = responseData;
}
});
return temperature;
}
但是,当方法运行时,即使新开一个进程,也会使页面的渲染停止,造成假死,可以使用Deferred对象:

  • Deferred.resolve()传递参数arg给回调函数。
  • Deferred.promise()返回Deferred.Promise对象,仅包含Deferred对象的done(),then(),fail(),isResolved(), isRejected(), always()方法,可以防止在封装的方法外修改Deferred对象。
  • jQuery.when()接受延迟对象,返回Promise对象。
  • Promise.done()是处于回调链尾端的方法。
1
2
3
4
5
6
7
8
9
10
11
function getTemperature() {
var defer = $.Deferred();
$.ajax({
type: 'GET',
url: '',
success: function (responseData) {
defer.resolve(responseData);
}
});
return defer.promise();
}

在调用方法时

1
2
3
$.when(getTemperature()).done(function(arg)) {
//do something with arg
}


CSS

[2023]英文文本元素与中文文本元素排版

若有英文字体,会导致两种文本应用字体不同,而二者行高可能不同,导致二者在单行中可能无法对齐,在多行中每行高度不一致。
可以设置line-height一致或者使用同种字体。


杂项

[2023]cdn.staticfile.org

老给我跳奇奇怪怪的CORS错误,指定没你好果汁吃嗷。
更换cdnjs。