美文网首页
2019-05-15 回调&promise&async&awai

2019-05-15 回调&promise&async&awai

作者: tsl1127 | 来源:发表于2019-05-15 16:01 被阅读0次

回调的形式


image.png

1、Node.js的error-first形式
fs.readFile('./1.txt', (error, content)=>{
if(error){
// 失败
}else{
// 成功
}
})


image.png

2、jQuery 的 success / error 形式
$.ajax({
url:'/xxx',
success:()=>{},
error: ()=>{}
})

3、jQuery 的 done / fail / always 形式
$.ajax({
url:'/xxx',
}).done( ()=>{} ).fail( ()=>{} ).always( ()=> {})

4、Promise 的 then 形式
$.ajax({
url:'/xxx',
}).then( ()=>{}, ()=>{} ).then( ()=>{})

promise
Promise/A+ 规范:[https://segmentfault.com/a/1190000002452115]

image.png

axios.ajax({
url: './'
}).then(s1,e1)
.then(s2,e2)
.then(s3,e3)
如果前面能够访问到则执行s1,如果不能则执行e1
无论s1还是e1都各自能处理好,则执行s2,如果不能执行好,则执行e2
无论s2还是e2都各自能处理好,则执行s3,如果不能执行好,则执行e3


image.png

自己写Promise
写一个函数
这个函数,要返回一个Promise(为什么?因为需要用到promise的then方法),别人用你这个函数,就可以then了


image.png
image.png
image.png

async/await


image.png
image.png
image.png
image.png

let promise1 = await new Promise(function(resolve) {
resolve(1);
});
undefined
promise1
1


image.png
image.png

实现一个promise.all
function PromiseAll (promises) {
return new Promise (function(resolve,reject) {
if (!Array.isArray(promises)) {
return reject(new TypeError('arguments must be an array'))
}
let resolvesCount = 0
let promiseNum = promises.length
let resolveValues = new Array(promiseNum) //一个数量一样的新数组
for(let i = 0; i<promiseNum; i++) {
Promise.resolve(promises[i]).then(function(value){
resolvesCount++
resolveValues[i] = value
if(resolvesCount === promiseNum){
return resolve (resolveValues)
}
},function(reason){return reject(reason)})
}
})
}

var p1 = Promise.resolve(1),
p2 = Promise.resolve(2),
p3 = Promise.resolve(3);
PromiseAll([p1,p2,p3]).then(results =>{console.log(results)})

image.png

参考https://segmentfault.com/a/1190000010765655

相关文章

  • 2019-05-15 回调&promise&async&awai

    回调的形式 1、Node.js的error-first形式fs.readFile('./1.txt', (erro...

  • Promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数。 回调地狱 回调套回调套回调套回调套回调套回调套回调....

  • 回调、同步回调、异步回调

    异步消息的传递-回调机制 原文地址:https://www.ibm.com/developerworks/cn/l...

  • ❄️细雨贴窗诉衷情

    2019-05-15

  • 前端入门11 -- JavaScript之Promise

    回调函数 回调函数分为两种类型,分别为同步回调与异步回调; 同步回调:会立即执行,完全执行完了才结束,不会放入回调...

  • 回调函数与promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数 具名回调写法 匿名回调写法 多层嵌套的匿名回调(回调地...

  • 回调函数与promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数 具名回调写法 匿名回调写法 多层嵌套的匿名回调(回调地...

  • Kotlin使用接口回调

    1.Java中的接口回调实现(支持多方法回调) 声明回调接口,初始化接口 使用接口回调(无参数) 使用接口回调(带...

  • Promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数一个最基本的具名回调匿名回调 回调地狱匿名回调嵌套过多层...

  • ❄️一树梨花一溪月

    晚安2019-05-15

网友评论

      本文标题:2019-05-15 回调&promise&async&awai

      本文链接:https://www.haomeiwen.com/subject/qrdpaqtx.html