如果我有这个功能
function count(n){
let num = 0
for(let i = n; i--;){
num++
}
return num
}
然后投入140000000,那么这将需要一秒钟来完成。如果我需要返回的值来继续一个函数的其余部分,我想我需要等待响应,这样我就可以使用响应了
async function doSomething(){
const one = await count(140000000)
const two = count(one)
return two
}
async function count(n){
let num = 0
for(let i = n; i--;){
num++
}
return num
}
但事实上,我认为它与其说是一个值,我需要传递到下一个函数中,让它工作,所以它基本上没有等待响应,因为它基本上发送一个函数作为参数,如
async function doSomething(){
const two = count(count(140000000))
return two
}
function count(n){
let num = 0
for(let i = n; i--;){
num++
}
return num
}
async function parent2(){
console.log('start')
console.time('ALL')
const numsToCount = [ 140000000, 170000000, 240000000 ]
const res = await countNums2(numsToCount)
// do other stuff with res
const fin = count(res[0])
console.timeEnd('ALL')
console.log('end', fin)
}
async function countNums2(numsToCount){
let countedNumsPromises = []
for(let i = numsToCount.length; i--;){
countedNumsPromises.push(count2(numsToCount[i]))
}
return Promise.all(countedNumsPromises)
}
async function count2(n){
let num = 0
for(let i = n; i--;){
num++
}
return num
}
function parent1(){
console.log('start')
console.time('ALL')
const numsToCount = [ 140000000, 170000000, 240000000 ]
const res = countNums(numsToCount)
console.timeEnd('ALL')
console.log('end', res)
}
function countNums(numsToCount){
let countedNums = []
for(let i = numsToCount.length; i--;){
countedNums.push(count(numsToCount[i]))
}
return countedNums
}
function count(n){
let num = 0
for(let i = n; i--;){
num++
}
return num
}
const parents = [
{name: 'Jon', pets: ['dodo', 'goofy']},
{name: 'Tammy', pets: ['gigi', 'laffy', 'bigbird']},
{name: 'Tom', pets: ['ralphy', 'goose']},
]
const res = await Promise.all(parents.map(async parent => {
const res2 = await Promise.all(parent.pets.map(async pet => {
...
}
}
async function doSomething(){
await Promise.all([wait(1000),wait(2000),wait(1500)])
wait(1000)
}
async function wait(ms){
return new Promise((resolve) => setTimeout(resolve, ms));
}
所以,也许我在这里花了很多时间,但基本上,我如何实现同步编程,什么不适合速度,什么是正确使用异步和promise。所有vs只是根据需要将所有函数相互传递,让函数计算出前一个函数的所有等待。另外,我发现map,reduce和filter可能不是最快的,因为你会在同一个数据上循环多次,所以不像上面的例子,我试图坚持更多的循环,但我不想分散回答问题的注意力,但这是我试图去的方向。
promise(以及Async/Await)不是获取同步代码并加快其速度的工具。当你创造一个promise时,通常是因为你根本没有在计算任何事情,而是在等待一些外部的事情发生。
例如,您可能正在等待网络响应返回,或者您可能正在等待计时器过去,或者等待某人按下某个键。在发生这种情况时,您不能执行任何工作,所以您可以创建一个promise,然后停止运行任何代码。由于javascript是单线程的,停止运行代码对于让其他代码开始运行非常重要,包括浏览器的普通页面绘制代码。
promise是带有的对象。然后
函数在其上。您可以调用。然后
并传入一个函数,告诉它“嘿,当您等待完毕时,请调用这个函数”。Async
/await
只是简化了处理promise的语法:Async
函数将自动创建promise,而await
ingpromise将自动调用.然后
。
我正在研究promsies和async/await的用法。 我编写了以下代码,它执行以下操作: 它获取一些数据库数据(使用Knex.js), 处理该数据, 将处理的数据分配到指定的属性中 这3个步骤执行了多次(在下面的代码中,执行了两次),并且始终等待执行: 现在,我正在尝试编写与等效的promise链,这就是我想到的: 但这不太管用。发生的是,在第一个返回之后,中的结束了它的等待,这导致返回-并
我试图理解为什么这段代码返回“Promise{pending}”。 当我通过reduceDirections()函数时,我可以看到我得到了想要的结果。但是当我(一行之后)时,我会改为“Promise pending” 很抱歉,我不理解promise和异步等待。我曾尝试在mdn上阅读和观看视频,但我不知道如何将它们显示的内容转移到这个问题上。提前感谢您的帮助!
问题内容: 我对JAX-WS进行了概述,并注意到了(和)的一些引用。 在什么情况下需要?(我认为JSR 109服务器?!) 问题答案: 是使用SUN的参考实现将Web服务作为标准存档部署在非Java EE5 Servlet容器上时所需的专有部署描述符。 Sun的RI 用作servlet上下文事件的侦听器和调度程序servlet。两者都必须在中声明。然后需要该文件为定义Web服务端点,以使其知道必须
我正在努力学习如何正确使用async Wait,但我对它有点共同的想法。 在片段中,我试图构建一个对象数组,其中包含我需要的关于我在组件中上传的文件的信息。问题是this.fileInfo中的对象并没有完全等待返回编码图像的promise,而是在我console.logthis.fileInfo时返回此输出: 如您所见,关键图像是一个值未定义的ZoneAwarePromise。你能帮我修一下吗?
我正在为一个大型应用程序编写自动化测试。这些测试中的一些很容易成为<code>异步,它只提供<code>async 测试应用程序的一些关键方面如下: 这是一个巨大的ASP.NET应用程序(尽管代码在通过单元测试执行时没有在ASP.NET上下文中运行)。 在其核心中,它严重依赖于每个线程缓存上下文信息(例如活动用户的整个权限方案)的静态对象。 现在,我的问题是当在方法中使用时,延续可能发生在与以前不