这就是它看起来的样子。
function async doAction() {
await this.waitForData();
// do some other things after data loads
// when data loads it's available in this.data
}
function waitForData() {
if (!this.promise) {
this.promise = new Promise(res => this.promiseResolve = res);
return this.promise;
}
else {
return Promise.resolve(this.data);
}
}
function loadData(data) {
//some things
this.data = data;
if (this.promiseResolve) {
this.promiseResolve(this.data);
}
}
它工作得很好,doaction
等待数据加载,然后开始操作。但这是相当多的代码,有没有更好的方法来做它?
有一些错误与并发调用或调用的意外顺序。我愿意
function waitForData() {
if (!this.promise) {
this.promise = new Promise(res => this.promiseResolve = res);
}
return this.promise;
}
function loadData(data) {
//some things
this.data = data;
if (this.promiseResolve) {
this.promiseResolve(this.data);
this.promiseResolve = null;
} else {
this.promise = Promise.resolve(this.data);
}
}
但除此之外,是的,这是通过承诺连接两个独立事物的方法。
本文向大家介绍你是如何更好地处理Async/Await的异常的?相关面试题,主要包含被问及你是如何更好地处理Async/Await的异常的?时的应答技巧和注意事项,需要的朋友参考一下 @HCLQ 玩node时。。他那么写还是比较常见的。。 你是指 callback 中使用的 error-first 的错误处理方式吗? 这种的确是常见,但是返回 的 我真的没见过。或许可以给些例子?
笔者在很长一段时间内都使用 koa@1 +(generator|bluebird)+ sequelize 这个组合,这个组合并没有什么问题,也很常见,但是到了滥用的地步,导致后来维护和调试起来都很痛苦。若排除 sequelize 这个我们不得不用的模块,从调试 cpuprofile 角度讲讲为什么笔者认为应该用 async/await + Promise 替代 co + generator|blu
我读到过,在中包含异步是async/await的反模式。下面的代码可以工作,但是我想知道如果没有中的,如何实现相同的结果。 谢了。
这是我的方法: 我显示加载程序时,但使用在抛给我一个关于字保留的错误。对于验证,我使用VeeValester 如何使用wait-insidepromise?
问题内容: 以下函数从url获取图像并进行加载,然后返回其宽度和高度: 问题是,如果我做这样的事情: 我得到,因为该函数运行但图像尚未加载。 仅当照片已加载且宽度和高度已可用时,如何使用等待/异步返回值? 问题答案: 如何使用/ 将此回调函数转换为Promise? 你不知道与往常一样,您可以使用构造函数。没有语法糖。 仅当照片已加载且宽度和高度已经可用时,如何使用/ 记录值? 你可以做
Async/await 是以更舒适的方式使用 promise 的一种特殊语法,同时它也非常易于理解和使用。 Async function 让我们以 async 这个关键字开始。它可以被放置在一个函数前面,如下所示: async function f() { return 1; } 在函数前面的 “async” 这个单词表达了一个简单的事情:即这个函数总是返回一个 promise。其他值将自动被