markdown JS中的eventproxy和承诺

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown JS中的eventproxy和承诺相关的知识,希望对你有一定的参考价值。

## promise
因为ajax都是异步的,我们又不想回掉函数里面嵌套好几层,所有有promise。
我们假设step1, step2, step3都是ajax调用后端,step1、step2、step3必须按顺序执行
```js
var val = 1;

function step1(resolve, reject) {
    console.log('步骤一:执行');
    if (val >= 1) {
        resolve('Hello I am No.1');
    } else if (val === 0) {
        reject(val);
    }
}

function step2(resolve, reject) {
    console.log('步骤二:执行');
    if (val === 1) {
        resolve('Hello I am No.2');
    } else if (val === 0) {
        reject(val);
    }
}

function step3(resolve, reject) {
    console.log('步骤三:执行');
    if (val === 1) {
        resolve('Hello I am No.3');
    } else if (val === 0) {
        reject(val);
    }
}

new Promise(step1).then(function(val){
    console.info(val);
    return new Promise(step2);
}).then(function(val){
    console.info(val);
    return new Promise(step3);
}).then(function(val){
    console.info(val);
    return val;
}).then(function(val){
    console.info(val);
    return val;
});
```


## eventproxy
eventproxy就是事件的订阅与发布,同样是三个函数,看一下用eventproxy实现。
```
	const Event = new EventProxy()

    Event.on('step1:success', (data) => {
		 step2();
    })

    Event.on('step2:success', (data) => {
		 step3();
    })

	function step1() {
		console.log('步骤一:执行');
		Event.emit('step1:success', data)
	}

	function step2() {
		console.log('步骤二:执行');
		Event.emit('step2:success', data)
	}

	function step3() {
		console.log('步骤三:执行');
	}

	step1();
```

以上是关于markdown JS中的eventproxy和承诺的主要内容,如果未能解决你的问题,请参考以下文章

eventProxy

promise与aysnc 与EventProxy

markdown 这是JS中的

markdown JS中的范围是什么?

markdown Node.js中的自定义ES6错误

markdown 在使用AJAX呈现的Handlebars.js模板文件上显示平面JSON文件中的数据。