草庐IT

Promise方法

全部标签

javascript - 实现 Promise.all 和 Promise.settle 的混合

我需要实现Promise.all的一个版本,它接受一组promise并像往常一样返回结果,此外还结算所有promise,很像Promise.settle在Bluebird库中执行此操作,但我不能使用Bluebird,并且必须仅依赖于标准promise协议(protocol)。实现起来会不会非常复杂?还是在这里询问如何实现它的想法太多了?我真的希望不会,所以我想问,如果有人以前实现过它,请分享如何正确实现的想法。这样做的前提是能够在调用完成后需要执行commit/rollback的数据库事务中使用它,并且不能松动promises仍在尝试在事务调用之外解决。编辑:提供给另一个问题的链接非常

javascript - 如何解决递归异步 promise ?

我在玩弄promises,我在处理异步递归promise时遇到了麻烦。场景是一位运动员开始跑100米,我需要定期检查他们是否跑完了,一旦他们跑完了,打印他们的时间。编辑以澄清:在现实世界中,运动员在服务器上运行。startRunning涉及对服务器进行ajax调用。checkIsFinished还涉及对服务器进行ajax调用。下面的代码试图模仿它。代码中的时间和距离是硬编码的,目的是让事情尽可能简单。抱歉没有说清楚。结束编辑我希望能够写出以下内容startRunning().then(checkIsFinished).then(printTime).catch(handleError)

javascript - 将方法设为静态有什么好处吗?

我正在使用Webstorm并编写了一个React组件,我的代码如下所示:asynconDrop(banner,e){banner.classList.remove('dragover');e.preventDefault();constfile=e.dataTransfer.files[0],reader=newFileReader();const{dispatch}=this.props;constresult=awaitthis.readFile(file,reader);banner.style.background=`url(${result})no-repeatcenter`

javascript - Firebase promise - Query.once 失败 : Was called with 1 argument. 预计至少 2

我正在尝试使用promises将来自Firebase的一些数据填充到一个数组中。这是数据库结构:-domainname(orsomething)|--highscore|--Foo:50|--Bar:60代码:vararr=[];highscoreRef.child('highscore').once('value').then(function(snapshot){snapshot.forEach(function(data){arr.push({playerName:data.key(),score:data.val()});});},function(error){console

javascript - 从控制台提取 console.log 方法

考虑到console未被重写并引用native对象,console.log方法(可能还有其他)是从console中提取的反对varlog=obj.log=console.log;//insteadofconsole.log.bind(console)log(...);obj.log(...);它在浏览器和Node兼容性方面是否100%安全?大量带有绑定(bind)console.log的JS示例(可能过于说明性)表明它可能不是。 最佳答案 浏览器在它们的console实现上有所不同,似乎只有基于WebKit/Blink的浏览器(Ch

javascript - 在 Object.create 中使用属性描述符的正确方法是什么?

我在Object.create方法中将一个对象作为第二个参数传递,但出现以下错误:UncaughtTypeError:Propertydescriptionmustbeanobject:1这是错误的代码:vartest=Object.create(null,{ex1:1,ex2:2,meth:function(){return10;},meth1:function(){returnthis.meth();}}); 最佳答案 Object.create(proto,props)有两个参数:proto—theobjectwhichsho

javascript - 收集多个 promise 结果? (纯javascript)

我是Promises的新手,我尝试先从本地存储加载大量结果,如果失败,再从服务器获取数据。我不想使用jquery-忽略我目前正在使用$.getJSON:-/functionloader1(){returnnewPromise(function(resolve,reject){localforage.getItem("data1").then(function(value){if(value!==null){resolve(value);}else{$.getJSON("/myapp/data1.json").then(function(data){if(data!==null){res

javascript - 返回 Promise<void> 的异步函数是否在 block 末尾有隐式返回?

publicasyncdemo():Promise{//Dosomestuffhere//Doingmorestuff//...//Endofblockwithoutreturn;}是新的Promise在TypeScript/ES6的block末尾隐式返回?bool类型的例子:classTest{publicasynctest():Promise{returntrue;}publicmain():void{this.test().then((data:boolean)=>{console.log(data);});}}newTest().main();这会打印出true到控制台,因为r

javascript - 为什么我的 jest.mock 中的 Promise reject() 会转到 then() 而不是 catch()?

我有两个文件,getItemInfo.js进行API调用,getItemInfo.test.js是相应的Jest测试文件。在测试文件中,我正在模拟由Node模块request-promise触发的http调用。问题在第二个代码块上,被*********包围。基本上为什么reject()错误仍然会在第二个单元测试中进入then()block?//getItemInfo.jsconstrp=require('request-promise');constgetItemInfo=(id)=>{constroot='https://jsonplaceholder.typicode.com/po

javascript - 单击事件时从 jquery 触发 vue 方法

我正在尝试将点击事件附加到已存在的dom元素。...我似乎无法在我的jquery单击处理程序中访问外部vue方法。它将抛出logDataisnotdefined。newVue({el:'#events',mounted(){$('.logMe').on('click',function(){constdata=$(this).data('log-id');this.logData(data);//throwslogDataisnotdefined});},methods:{logData(id){console.log(id);//neverfires...hitserver},},}