草庐IT

javascript - chai-as-promised:单个测试中的多个 expect 语句

我正在使用chai-as-promised测试一些promise。我的问题是我不确定如何在单个测试中有多个expect语句。为了让expect().to.be.fulfilled正常工作,我需要返回它,如下所示:it('test',()=>{returnexpect(promise).to.be.fulfilled}...或者使用notify,像这样:it('test',(done)=>{expect(promise).to.be.fulfilled.notify(done)}当我有另一件事需要检查时,例如某个函数被调用时,问题就来了,如下所示:it('test',(done)=>{v

javascript - 在没有 transaction.get() 的情况下启动 firestore 事务

我想将文档从一个集合移动到另一个集合。因此,我想使用事务来1.创建新文档和2.删除旧文档。我可以执行以下操作:db.runTransaction((transaction)=>{returntransaction.get(docRef).then(()=>transaction.set(newDocRef.doc(docId),doc)).then(()=>transaction.delete(docRef));我如何重写此代码以从transaction.set()而不是transaction.get()开始,因为我已经有了这个上下文中的文档,所以它是多余的。区别在于transacti

javascript - 在数组和对象之间使用逗号运算符的 Promise.all 如何工作?

我遇到过这段代码:constresults=awaitPromise.all([Model1.find({}),Model2.find({})],Model3.find({})),v1=results[0],v2=results[1],v3=results[2]用数组和单个对象调用all()—`Model*是Mongoose模型。这是一个很容易修复的错误,但我想了解它是如何给出结果值的,这些值是:v1持有Model1对应的所有文档v2持有Model2对应的所有文档v3未定义如thisansweronthecommaoperator中所述,我只希望Model3.find({})promi

javascript - 在 promise 中处理错误时返回成功

我有一个处理通过WebAPI执行的HTTP请求的promise:promise=promise.then(r=>{//...},error=>{if(error.status==404){//HereIcanfixanerrorandcontinueproperly}else{//Heretheerrorshouldbepropagatedfurtherinthepromise}}//laterinthecode:promise.catch(r=>{/*Moreerrorhandling*/});在代码的后面,这个promise链接到更多的错误检查。在出现404错误的情况下,我实际上可

javascript - 扩展 `Promise` 并更改 `then` 签名

我想延长Promise并更改then签名所以它的回调接收两个值。我尝试了不同的方法,其中两种已记录并经过测试here.遗憾的是,我遇到了各种错误,或者生成的类的行为不像Promise。方法一:WrappinganativePromiseexportclassMyWrappedPromise{constructor(data){this.data=data;this.promise=newPromise(evaluate.bind(data));}then(callback){this.promise.then(()=>callback(this.data,ADDITIONAL_DATA

javascript - 条件 .then 执行

如何有条件地跳过promise而不做任何事情。我创建了一个嵌套的promise,我有7个.then's。但有条件地,我需要跳过几个.then并且在那个block中什么都不做,如何实现这个?我的完整代码:constadmin=require('firebase-admin');constrp=require('request-promise');module.exports=function(req,res){constphone=String(req.body.phone).replace(/[^\d]/g,'');constamount=parseInt(req.body.amoun

javascript - 如何将回调样本转换为延迟对象?

我有一个接受回调函数的函数,我在其中将数据传回。可以将其转换为延迟对象以便更好地练习吗?这是我得到的:varchapters;vargetChapters=function(fnLoad){//CACHEDATAIFAPPLICABLEif(!chapters){//CALLJSONDATAVIAAJAX$.getJSON('/chapters.txt').done(function(json){//STOREDATAINLOCALSTORAGEchapters=Lawnchair(function(){this.save(json,function(data){//CALLCALLB

javascript - 在 promise 链中访问先前履行的 promise 结果

这个问题在这里已经有了答案:HowdoIaccesspreviouspromiseresultsina.then()chain?(17个答案)关闭7年前。在使用promises编码时,访问promises链中很久以前的数据的正确模式是什么?例如:do_A.then(do_B).then(do_C).then(do_D).then(do_E_WithTheDataComingFrom_A_And_C_OnlyWhen_D_IsSuccesfullyCompleted)我当前的解决方案:通过链传递单个JSON结构,并让每个步骤填充它。对此有何看法?

javascript - 有条件的 promise

在我的脚本中,我需要检索字典以将编码值转换为名称:$.ajax({//retrievedictionary}).done(function(dictionary){//convertencodedvaluesintonames}).done(function(){//runmyapplication});但是,有时字典已经被另一个应用程序加载,在这种情况下我不需要ajax调用:if(dictionary){//convertencodedvaluesintonames//runmyapplication}else{$.ajax({//retrievedictionary}).done(

javascript - 如何避免这种异步惰性模式?

很多时候,我需要在Javascript中编写这样一个延迟异步加载:if(myvar!=undefined){doSomeTreatment(myvar)}else{loadMyVarAsynchronously().then(function(value){myvar=valuedoSomeTreatment(myvar)})}在这里,myvar是散列的某个属性,而不是局部变量。loadMyVarAsynchronously异步加载myvar的值(例如,使用Promise或JQueryDeferred)是否有一种模式可以避免在此代码中将以下行写两次?doSomeTreatment(my