new Date().getTime()
是当前时间的时间戳
function test(resolve, reject) {
var timeOut = Math.random() * 2;
log('set timeout to: ' + timeOut + ' seconds.');
setTimeout(function () {
if (timeOut < 1) {
log('call resolve()...');
resolve('200 OK');
}
else {
log('call reject()...');
reject('timeout in ' + timeOut + ' seconds.');
}
}, timeOut * 1000);
}
var p1 = new Promise(test); // 执行test?
var p2 = p1.then(function (result) { // then代表resolve?
console.log('成功:' + result);
});
var p3 = p2.catch(function (reason) { // catch代表reject?
console.log('失败:' + reason);
});
YYYYYYYYYYY:一个当中的new then catch,前是函数自信的回调,两种resolve和reject,参数放在result里面
// 执行-执行中的函数返回-看情况-resolve或reject
new Promise(test).then(res => {}).then(res2 => {}).catch(error => {})
除了串行执行若干异步任务外,Promise还可以并行执行异步任务。
试想一个页面聊天系统,我们需要从两个不同的URL分别获得用户的个人信息和好友列表,这两个任务是可以并行执行的,用Promise.all()实现如下:
var p1 = new Promise(function (resolve, reject) {
setTimeout(resolve, 500, 'P1');
});
var p2 = new Promise(function (resolve, reject) {
setTimeout(resolve, 600, 'P2');
});
// 同时执行p1和p2,并在它们都完成后执行then:
Promise.all([p1, p2]).then(function (results) {
console.log(results); // 获得一个Array: ['P1', 'P2']
});
有些时候,多个异步任务是为了容错。比如,同时向两个URL读取用户的个人信息,只需要获得先返回的结果即可。这种情况下,用Promise.race()实现:
var p1 = new Promise(function (resolve, reject) {
setTimeout(resolve, 500, 'P1');
});
var p2 = new Promise(function (resolve, reject) {
setTimeout(resolve, 600, 'P2');
});
Promise.race([p1, p2]).then(function (result) {
console.log(result); // 'P1'
});
由于p1执行较快,Promise的then()将获得结果'P1'。p2仍在继续执行,但执行结果将被丢弃。
如果我们组合使用Promise,就可以把很多异步任务以并行和串行的方式组合起来执行。
// 以上是抄的
正则
var a = 'pse'
/^p/.test(a) // true
/^p/.test(f) // false 匹配字符串第一个字符,是否等于p,是则返回true,不是返回false复制代码
转载于:https://juejin.im/post/5b35cf37e51d4558b64f3b1a