在尝试理解async/await时,我尝试了这段代码,但它的行为与我预期的不一样。
let test = async function () {
let result = new Promise((resolve, reject) => {
setTimeout(() => resolve('done1'), 2000)
})
let result2 = new Promise((resolve, reject) => {
setTimeout(() => resolve('done2'), 2500)
})
let x1 = await result
console.log(x1)
let x2 = await result2
console.log(x2)
}
test()
我希望控制台在2秒后显示done1,然后在done1后2.5秒显示done2。相反,它在2秒内显示done1,在那之后0.5秒显示done2。为什么它会这样,因为我在显示第一个之后等待第二个setTimeout?
当您创建一个new Promise
时,它开始运行它的代码。当您在里面有setTimeout
时,计时器实际上正在运行。当您在调用Promise
之前使用wait
时,它会等待,直到promise将被解决或拒绝,然后工作。
你需要创造每一个promise,然后等待它。
let test = async function () {
let result = new Promise((resolve, reject) => {
setTimeout(() => resolve('done1'), 2000);
});
let x1 = await result;
console.log(x1);
let result2 = new Promise((resolve, reject) => {
setTimeout(() => resolve('done2'), 2500);
});
let x2 = await result2;
console.log(x2);
}
test()
我试图利用es7异步功能,即。 在这里,所有promise*函数都进行ajax调用,并返回或如果ajax响应满足传递的参数,我相信我不能连续使用3个等待,因此需要一种方法来等待所有这些调用以某种方式返回它们的值。
我试图写一个异步函数,使多个读取,等待所有完成,然后返回JSON结果作为一个数组。这是我到目前为止所拥有的: 文件1。js 应用程序编程接口。js util.js 当执行在调试器处暂停时,我使用Chrome的开发工具检查,它正确地是由3个对象组成的数组,但如果我检查,它奇怪地在控制台中返回一个
是的,以前有人问过这个问题,但我找不到任何解决办法。所以我刚买了一个新的VPS(Ubuntu14.04)来开发,因为我不想再在我的主VPS上工作了 Ive copy将我的主VPS(一切正常)中的每个文件粘贴到我的新VPS,安装了所有内容,现在想启动我的nodejs应用程序。 但是,我收到以下错误: SyntaxError:意外的令牌函数 我的代码: 很明显,help me()函数只是一个测试函数,
我在一个类中有多个同步的静态方法。 现在只允许一个线程执行类中的任何同步函数。这是不有效的,因为这些函数彼此独立并且可以并行运行。我如何才能使它们彼此独立,但每个方法只允许一个线程,而对类的更改最少。
我是ES6新手,所以我学习Javascript语句。 在测试async/await时,我发现了一些奇怪的行为。 我这样写代码, 输出在这里, 我定义async来运行,并等待每一行同步工作。 预期产量在这里, 谢谢。
转换为任务返回委托的异步lambda表达式不能返回值