【发布时间】:2020-01-20 10:49:06
【问题描述】:
我正在尝试定义一个返回承诺的函数。当设置给定数组时,promise 应该会解析 (push())。
为此,我尝试使用代理对象(受this 影响):
let a = []
;(async function(){
const observe = array => new Promise(resolve =>
new Proxy(array, {
set(array, key, val) {
array[key] = val;
resolve();
}
}));
while(true){
await observe(a);
console.log(new Date().toLocaleTimeString(),"Blimey Guv'nor:",`${a.pop()}`);
}
})(a);
;(async function(){
await new Promise(resolve => timerID = setTimeout(resolve, 2000))
a.push('ʕ·͡ᴥ·ʔ');
a.push('¯\(°_o)/¯ ')
})(a)
我不明白为什么这不起作用。有人知道吗?
更一般地说,什么是在推送到数组时解决 promise 的好方法?
【问题讨论】:
-
你可以看看下面的答案stackoverflow.com/questions/55309894/…
-
感谢@Avior,尽管它的标题是关于
fetch命令的承诺 -
我认为
await observe(a);永远不会解决... -
;(async function() { ... })(a);- 将a传递到 IIFE 但不使用它是没有用的。您必须将new Proxy()的结果存储为a
标签: javascript asynchronous promise async-await