问题一
使用Promise描述如下过程:绿灯亮3秒,然后红灯亮3秒,然后黄灯再亮3秒。灯亮过程可以用console表示。
当时写的不好,纠结在是封装个sleep函数还是用setTimeout,然后定义了三个Promise对象分别表示红、绿、黄灯亮的过程,自己感觉也挺不好的,所以有点畏首畏尾写不下去。回来在自己机器上几分钟就写出来了,还没有重复定义,内心真是。。那个悔啊,被别人看扁了,其实哥真不是不会啊。
function sleep(delay){
var now = new Date().getTime();
while(new Date().getTime() - now < delay){
}
}
function led(color){
console.log(color);
sleep(3000);
return new Promise(function(resolve,reject){
resolve();
});
}
led("green").then(function(){
led("red");
}).then(function(){
led("yellow");
});
问题二
自己实现一个sort2,尽可能地模拟js原有的sort函数
这个我确实不会写,js原有的sort函数还可以接收函数参数的。不过让我写个排序的函数还是没问题的。
function sort2(arr,option){
for(var i=0,len=arr.length;i<len-1;i++){
for(var j=i+1;j<len;j++){
if(option && option == 1){
//1为降序,默认或者0为升序
if(arr[j] > arr[i]){
var tmp = arr[j];
arr[j] = arr[i];
arr[i] = tmp;
}
}else {
if(arr[j] < arr[i]){
var tmp = arr[j];
arr[j] = arr[i];
arr[i] = tmp;
}
}
}
}
return arr;
}
//var arr = [9,4,6,2,1,3,5,8,7,0];
var arr = ['c','b','e','a'];
console.log(sort2(arr));
该函数支持正序,逆序,数字,字母排序。