0226
1. 关于Promise的说法, 下述正确的是(不定选型)
a. Promise.resolve 返回一个 Promise 并把状态置为 fullfilled
b. Promise.reject 返回一个 Promise 并把状态置为 rejected
c. Promise.all 中如果当前数组中所有的Promise的状态置为 fullfilled 或 rejected, 自己的状态即置为 fullfilled
d. Promise.race 中如果当前数组中率先改变状态的 Promise 为 fullfilled, 则自己的状态即置为 fullfilled
e. Promise.all 中数组项必须为 Promise
f. Promise.race 中数组项必须为 Promise
(a,b,d,e,f)
- (c)Promise.all 所有状态均为 fullfilled 则结果为 fullfilled , 任意一个状态为rejected 则结果为 rejected。fullilled 的结果会返回一个数组,这个数组中的结果顺序和传入的promise数组的promise顺序一致
Promise.all([promise1, promise2, promise3])
.then(res => {
console.log(res); //['data1', 'data2', 'data3']
})
.catch(e => {
console.log(e);
});
2.(d)Promise.race 只要有一个Promise对象状态变为解决或拒绝,返回的 promise就会解决或拒绝
2. 关于浏览器网络知识,以下说法正确的是(不定选型)
a. JSONP/CORS 支持使用 GET/POST/PUT/DELETE 请求方式实现跨域
b. 现代浏览器支持使用 Fetch/XMLHttpRequest 两种方式发送 Ajax 请求
c. HTTP 500 代表用户传入的参数错误,禁止访问
d. HTTP 协议在OSI七层模型中属于会话层,用于实现两台主机间的通信
e. WebSocket 有同源限制,因此会有跨域的问题
f. 使用 Gzip 方式,可以有效压缩响应的体积
(b,f)
-
(a)Web页面上调用js文件时则不受跨域的影响(不仅如此,我们还发现凡是拥有”src”这个属性的标签都拥有跨域的能力,比如<\script>、<\img>、<\iframe>),所以JSONP跨域支持的请求只有GET没有POST。CORS支持各种请求
-
(c)HTTP 500是 服务器内部错误;参数错误应该是 400(Bad Request)
-
(e)WebSocket 没有同源限制
-
(f)
-
客户端请求中增加Accept-Encoding: gzip表示客户端支持gzip;
-
服务端接收到请求后,将结果通过gzip压缩后返回给客户端并在响应头中增加Content-Encodin:gzip 表示响应数据已被压缩
-
客户端接收请求,响应头中有Content-Encodin:gzip表示数据需解压处理
客户端也可以发送压缩数据给服务端,通过代码将请求数据压缩即可,规范起见同样要在请求中加入Content-Encodin:gzip
3. 编程题:实现一个金额展示格式化的函数 formatAmount,金额展示规则为整数部分每三位用逗号分割,小数部分展示两位。输入数据不是数字时返回 "-"
举例:
formatAmount(2688) => "2,688.00"
formatAmount("2e6") => "2,000,000.00"
formatAmount(-2.33333333) => "-2.33"
formatAmount("Alibaba") => "-"
function formatAmount(num){
//判断是否是数字
if(!isNum(num)){
return '-'
}
num = Number(num);
numStr = String(num);
[integer,decimals] = numStr.split('.');
//整数部分
let integerRes = "";
for(let i=integer.length-1;i>=0;i--){
if(i%3===0 && i!==integer.length-1 && integer[i]!=='-'){
integerRes = integer[i] + ',' + integerRes;
}
else{
integerRes = integer[i] + integerRes;
}
}
//小数部分
decimals = decimals ? decimals.substring(0,2):"";
let result = decimals ? integerRes + '.' + decimals : integerRes + '.00';
return result;
}
function isNum(num){
if(!isNaN(num) && typeof num !== "boolean" && num !==""){
return true;
}
return false;
}
网友评论