草庐IT

promise2

全部标签

javascript - 在 javascript 中递归构建 promise 链 - 内存注意事项

在thisanswer,一个promise链是递归构建的。稍微简化一下,我们有:functionfoo(){functiondoo(){//alwaysreturnapromiseif(/*moretodo*/){returndoSomethingAsync().then(doo);}else{returnPromise.resolve();}}returndoo();//returnsapromise}大概这会产生一个调用堆栈和一个promise链——即“深”和“宽”。与单独执行递归或构建promise链相比,我预计内存峰值会更大。是这样吗?有没有人考虑过这样建链的内存问题?Prom

javascript - 基本的 Javascript promise 实现尝试

为了更好地理解promises在Javascript中的工作原理,我决定尝试一下并自己编写基本实现代码。基本上,我想实现将函数作为参数的Promises对象(我在代码中将其称为Aaa)。此函数可以调用resolve来resolvepromise,或者reject来reject它。基本实现和使用如下。根据promise规范,不确定第二个参数是否可以接受,但这就是我目前所得到的。Aaa=function(f,pause){console.log("ggg");vart=this;this.f=f;this.thens=[];this.resolve=function(g){for(vari

javascript - 基本的 Javascript promise 实现尝试

为了更好地理解promises在Javascript中的工作原理,我决定尝试一下并自己编写基本实现代码。基本上,我想实现将函数作为参数的Promises对象(我在代码中将其称为Aaa)。此函数可以调用resolve来resolvepromise,或者reject来reject它。基本实现和使用如下。根据promise规范,不确定第二个参数是否可以接受,但这就是我目前所得到的。Aaa=function(f,pause){console.log("ggg");vart=this;this.f=f;this.thens=[];this.resolve=function(g){for(vari

javascript - Promise 构造函数拒绝调用与抛出错误

在下面的代码中:varp1=newPromise(function(resolve,reject){throw'test1';});varp2=newPromise(function(resolve,reject){reject('test2');});p1.catch(function(err){console.log(err);//test1});p2.catch(function(err){console.log(err);//test2});在Promiseapi中使用reject(在p2中)和抛出错误(在p1中)有什么区别)使用throw?完全一样吗?如果是一样的,那为什么我

javascript - Promise 构造函数拒绝调用与抛出错误

在下面的代码中:varp1=newPromise(function(resolve,reject){throw'test1';});varp2=newPromise(function(resolve,reject){reject('test2');});p1.catch(function(err){console.log(err);//test1});p2.catch(function(err){console.log(err);//test2});在Promiseapi中使用reject(在p2中)和抛出错误(在p1中)有什么区别)使用throw?完全一样吗?如果是一样的,那为什么我

javascript - `return await promise` 和 `return promise` 之间的区别

给出下面的代码示例,行为是否有任何差异,如果有,这些差异是什么?返回等待promiseasyncfunctiondelay1Second(){return(awaitdelay(1000));}返回promiseasyncfunctiondelay1Second(){returndelay(1000);}据我了解,第一个是在异步函数中进行错误处理,错误会从异步函数的Promise中冒出。然而,第二个需要少一个滴答声。这是正确的吗?此代码段只是一个返回Promise以供引用的常用函数。functiondelay(ms){returnnewPromise((resolve)=>{setTi

javascript - `return await promise` 和 `return promise` 之间的区别

给出下面的代码示例,行为是否有任何差异,如果有,这些差异是什么?返回等待promiseasyncfunctiondelay1Second(){return(awaitdelay(1000));}返回promiseasyncfunctiondelay1Second(){returndelay(1000);}据我了解,第一个是在异步函数中进行错误处理,错误会从异步函数的Promise中冒出。然而,第二个需要少一个滴答声。这是正确的吗?此代码段只是一个返回Promise以供引用的常用函数。functiondelay(ms){returnnewPromise((resolve)=>{setTi

javascript - 在 render 方法中使用 promise 渲染 React 组件

我有一个组件,它获取项目集合作为Prop,并将它们映射到组件集合,这些组件呈现为父组件的子组件。我们使用存储在WebSQL中的图像作为字节数组。在map函数中,我从项目中获取图像ID并异步调用DAL以获得图像的字节数组。我的问题是我无法将promise传播到React,因为它不是为处理渲染中的promises而设计的(至少据我所知)。我来自C#背景,所以我想我正在寻找类似await关键字的东西来重新同步分支代码。map函数看起来像这样(简化):varitems=this.props.items.map(function(item){varimageSrc=Utils.getImageU

javascript - 在 render 方法中使用 promise 渲染 React 组件

我有一个组件,它获取项目集合作为Prop,并将它们映射到组件集合,这些组件呈现为父组件的子组件。我们使用存储在WebSQL中的图像作为字节数组。在map函数中,我从项目中获取图像ID并异步调用DAL以获得图像的字节数组。我的问题是我无法将promise传播到React,因为它不是为处理渲染中的promises而设计的(至少据我所知)。我来自C#背景,所以我想我正在寻找类似await关键字的东西来重新同步分支代码。map函数看起来像这样(简化):varitems=this.props.items.map(function(item){varimageSrc=Utils.getImageU

javascript - 如何在恢复功能之前等待 JavaScript Promise 解决?

我正在做一些单元测试。测试框架将页面加载到iFrame中,然后针对该页面运行断言。在每次测试开始之前,我创建一个Promise它设置了iFrame的onload事件调用resolve(),设置iFrame的src,并返回promise。所以,我可以调用loadUrl(url).then(myFunc),它会等待页面加载后再执行myFunc是。我在我的测试中到处都使用这种模式(不仅仅是为了加载URL),主要是为了允许对DOM进行更改(例如,模仿单击按钮,并等待div隐藏和显示).这种设计的缺点是我经常编写匿名函数,其中只有几行代码。此外,虽然我有一个解决方法(QUnit的assert.a