草庐IT

ES6 - Promise详解及用法

全部标签

javascript - 在 $.ajax Success 方法中拒绝 jQuery Promise

这可能是一个愚蠢的错误,但这里有。我需要在$.ajax()调用的成功函数中拒绝jQueryPromise。返回值“success”为bool值。functiondoSomething(){varmyPromise=$.ajax({method:"POST",url:"/url/to/use",data:{"value":$("#value").val()},success:function(data){if(data.success==false){ConfirmMessage.showErrorMessage(data.messages[0]);returnnew$.Deferred

javascript - promise.all 在 forEach 循环中——所有东西同时触发

在Node应用程序中,我需要以同步方式遍历某些项目,但循环内的某些操作是异步的。我的代码现在看起来像这样:someAPIpromise().then((items)=>{items.forEach((item)=>{Promise.all[myPromiseA(item),myPromiseB(item)]).then(()=>{doSomethingSynchronouslyThatTakesAWhile();});}}当items是1的数组时,这会产生奇迹。但是,一旦有多个项目,promise.all()将立即触发每个数组中的项目,无需等待循环中的操作结束。综上所述...我如何确保

javascript - 为什么需要立即使用我的 ES6 Promise Rejection 以避免出现控制台错误消息?

请注意:以下是在不同浏览器中表现不同的问题。所以也许这是一个浏览器实现问题。无论如何,我都希望得到一些建议。在我的应用程序中,我创建了几个promise,我可能要等到future相当长一段时间才会使用这些promise。这应该没问题,毕竟它们是promise。如果存储的promise已解决,则没有问题。我可以在未来尽可能多地使用它,并且可以多次使用它。正如预期的那样。但是,如果被存储的promise被拒绝,就会出现问题。除非我在做出拒绝后不久(不确定多快)使用该拒绝,否则Chrome或Firefox中会弹出一条控制台消息,指示存在未捕获的promise拒绝/错误。IE不会弹出该错误。因

javascript - 我怎样才能让 `.then()` 保持足够长的时间以实现具有 native promise 的轮询功能?

总结:poll()带有回调的函数可用;我还没有发现任何使用nativepromise。我试图改编一些但没有成功。我还没有解决的问题是,当setTimeout调用的函数的第一个实例结束而没有任何返回时,.then()监听它会将终止视为false和一个reject().then()终止并且不监听以后的返回。问题:如何最好地帮助.then()函数坚持使用resolve()稍后返回或reject()?这篇文章的其余部分是细节。阅读有帮助的内容。可用的投票功能:我喜欢(https://stackoverflow.com/users/1249219/om-shankar)OmShankar在Cal

javascript - 如何测试返回 Promise 的方法

我正在编写Angular2RC5应用程序,并使用Karma和Jasmine进行单元测试。我有一个返回Promise的方法(它位于对angular的http.post的调用之上)我想在完成后运行一些断言。这样的东西是行不通的letresult=myService.getFoo();result.then(rslt=>expect(1+1).toBe(3));//theerrorislost这会创建一个“UnhandledPromiserejection”警告,但错误会被抑制并且测试通过。如何根据已解决的promise运行断言?注意事项:.catch()方法似乎不是我想要的。我不想记录或做

javascript - 如何同步 Promise 对象?

我有需要同步工作的promise对象。例如,第二个promise不应该在第一个promise完成之前起作用。如果第一个拒绝第一个必须再次执行。我已经实现了一些示例。这个效果很好。调用getVal,等待2000ms,返回,i++,再次调用getVal.....getVal(){returnnewPromise(function(resolve,reject){setTimeout(function(){resolve(19)},2000);});}asyncpromiseController(){for(vari=0;i但我需要控制一组promise对象。我想做的是我有一个数据,我把它分

javascript - 使用 Jest 模拟基于 promise 的请求

我正在尝试使用Jest对函数进行单元测试,但我在处理jest模拟模块时遇到了一些麻烦(相当于nodejs世界中的rewire或proxyquire)。我实际上是在尝试测试是否已使用一些参数在模拟模块上调用了spy程序。这是我要测试的功能。注意:当前测试只涉及“fetch(...)”部分,我正在尝试测试fetch是否已使用good参数调用。exportconstfetchRemote=slug=>{returndispatch=>{dispatch(loading());returnfetch(Constants.URL+slug).then(res=>res.json()).then(

javascript - 结合 ES6 unicode 文字和 ES6 模板文字

这个问题在这里已经有了答案:ES6:BadcharacterescapesequencecreatingASCIIstring(1个回答)关闭6年前。如果我想在ES6/ES2015javascript中打印一个unicode汉字,我可以这样做:console.log(`\u{4eb0}`);同样,如果我想将变量插入到模板字符串文字中,我可以这样做:letx="48b0";console.log(`Thecharactercodeis${x.toUpperCase()}.`);但是,我似乎不能将两者结合起来打印一个列表,例如40个连续的unicode汉字。这不起作用:for(leti=0

javascript - 如何保证多个 promise 的解决顺序?

尝试学习一些现代JS,尤其是ECMAScript6Promises。我正在玩这个简单的测试:letslow=newPromise((resolve)=>{setTimeout(function(){ console.log('slow'); resolve(); },2000,'slow');});letinstant=newPromise((resolve)=>{ console.log('instant'); resolve(); });letquick=newPromise((resolve)=>{setTimeout(function(){ console.log('quick

javascript - 使用 'Promise' 与不使用 'Promise' : in which cases?

我不知道SO是否适合提出这样的问题。我知道一点Promises,我在Node/Express环境中使用它们来“修复”Node的异步行为查询数据库(=等待数据库回答,然后做一些事情)。然而,我使用它们的次数越多,我就越不知道何时不用它们。例如,我写了一段这样的代码(用于查询GoogleMatrixAPI的本地脚本).......for(vari=0;i{}...我不知道在这里使用Promise.all是否有意义...有规律可知吗?我没有得到的行为?换句话说,我什么时候知道我的脚本运行没有正确参数的函数存在“风险”(argument从另一个函数返回这不是“结束”)...?谢谢。