V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  channg  ›  全部回复第 15 页 / 共 15 页
回复总数  293
1 ... 6  7  8  9  10  11  12  13  14  15  
2018-08-01 14:42:19 +08:00
回复了 channg 创建的主题 程序员 编译 deno 的时候报了个错,有人最近编译过吗
@sagaxu 所以又要依赖方法了,其实 promise 也好 async/await 也罢 都只是一种语法而已,与业务场景无关,选择自己需要的就可以了。
@sagaxu 确实一个 promise 可以永远被调用 then 但是处理第一次执行之外,但除了第一次之外,其他的过程只是一个取值过程,我不知道你认为的业务场景对于这样是否有用?
@sagaxu

好的 就你这段代码而言,可以这样
```
var promise1 = new Promise(function(resolve, reject) {
setTimeout(resolve, 100, 'foo');
console.log('invoke')
});

async function foo() {
const v1 = await promise1;
const v2 = await promise1;

console.log(v1);
console.log(v2);
}

setTimeout(foo, 2000);
```

可以发现,invoke 之后被输出一次,也就是说后面 await 对于取得值将永远跟前一个一致,因为根据 promise a+ Promise States 中明确规定了,pending 可以转化为 fulfilled 或 rejected 并且只能转化一次,也就是说如果 pending 转化到 fulfilled 状态,那么就不能再转化到 rejected。并且 fulfilled 和 rejected 状态只能由 pending 转化而来,两者之间不能互相转换。

所以你可以将 延迟时间加长 可以发现两者是同时输出的。

所以对于业务而言,这个是没用作用的
@sagaxu 肯定不可以啊
@sagaxu 可以,但是 Promise 状态 无法逆向改变,用一次就不能用了
@sagaxu 消息队列的作用,最大的就是减少对其他方法的依赖,async/await 却是加大了方法之间的依赖。
@mcfog 下沉主题了,谢谢你,提醒了我,框架里有对 reject 的同意处理 不过做的不够好,需要改善
@strugglexiang 文档只有中文的 ,里面有很多原理 再最下面
@SilentDepth 最大的用处就是解决了异步请求的依赖,当异步数据出现依赖关系的时候,可以用消息队列的模型 去执行异步请求,比如说一个,需要使用用户信息,直接把用户信息塞到消息队列,然后再塞这个方法,就能顺序执行。当然这也是一个 model 层框架,有一些集中数据托管等一些功能啦,监听数据变化的方法啦。
@LeungJZ 谢啦 ,我应该在 文档最开始就写上为什么要使用这个
@royzxq 可能是我工作场景中使用 vuex 遇到了太多坑点了,本来想写一个用来替换 vuex 结果写着写着就变成一个框架了。
1 ... 6  7  8  9  10  11  12  13  14  15  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5739 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 20ms · UTC 02:50 · PVG 10:50 · LAX 18:50 · JFK 21:50
Developed with CodeLauncher
♥ Do have faith in what you're doing.