jjzjj

Promises

全部标签

javascript - 你今天如何在前端使用 es6 promises?

我正在尝试使用babel来编译包含es6promises的文件。我已经安装了babel-cli、babel-preset-es2015、babel-plugin-es6-promise。我的.babelrc配置是:{"presets":["es2015"],"plugins":["es6-promise"]}我得到了编译后的js文件,里面有require(),但我根本不想使用require。今天是否有可能在前端使用es6promises而无需js?请提供任何指向es6promises实现示例的babel链接(或者甚至babel+require因为我无法让requirejs正常工作)ps

javascript - 使用 Bluebird 在 Promises 中包装 Node.js 回调

如何在Bluebird中使用Promise包装Node.js回调?这是我想出的,但想知道是否有更好的方法:returnnewPromise(function(onFulfilled,onRejected){nodeCall(function(err,res){if(err){onRejected(err);}onFulfilled(res);});});如果只需要返回一个错误,是否有更简洁的方法来执行此操作?编辑我尝试使用Promise.promisifyAll(),但结果没有传播到then子句。我的具体例子如下图。我正在使用两个库:a)sequelize,它返回promise,b)s

JavaScript Promise.all - 如何检查解析状态?

比方说,我有一个promise数组,每个元素都是一个AJAX调用,用于获取View的图像(png)。constimages=Promise.all(views.map(view=>{returnfetch(`/sites/${siteId}/views/${view.id}/image/`);}));是否有可能使用Promise.all检查promise解决的当前状态?如果不行,还有其他办法吗?例如,如果下载了10/20张图片,我想给用户一个反馈,我们已经为他下载了50%图片。 最佳答案 每当promise解决时,只需增加一个变量:

javascript - task.js 生成器/ promise 与异步回调

我想知道在处理JavaScript中的异步代码时,这两种方法中哪种方法更好。我想了解哪种方法可以生成更清晰的代码。我习惯于使用promises,它们似乎比异步方法(https://github.com/caolan/async)更灵活。我也知道Task.js库(http://taskjs.org/),但这依赖于作为EcmascriptHarmony一部分的yield关键字。 最佳答案 async库封装了几个非常常见的异步模式,包括并行进行任意异步调用和异步迭代列表。它旨在与“nodeback”(err,res)API一起使用,这使得

javascript - JS Promises/A+ 的 'catch' 方法名称是否无效,因为它是 JS 关键字?

最近开始在一个项目中使用JSPromises。我注意到每次我使用.catch我的JSlinter提示。它确实运行并做了它应该做的事情,但我查找了ECMAScriptspec它看起来真的是对的:因为catchisakeyword它不能用作标识符。据我了解,方法名称是标识符,因此这是无效的:Promise.reject("Duh").catch(alert);应该是这样的:Promise.reject("Duh")['catch'](alert);我错过了什么? 最佳答案 WhatamImissing?属性名称不是标识符,它可以使用任何

javascript - 为什么仅调用同步函数时 javascript promises 是异步的?

在测试中,我发现JavaScriptPromises总是是异步的,无论它们的链中是否包含任何异步函数。这里是一些代码,显示了控制台中的操作顺序。如果你运行它,你会看到即使每个函数都是同步的,输出显示两个aPromise()调用是并行运行的,并且“令人惊讶的是,这是在运行2完成后发生的”不在运行2完成之前发生。functionaPromise(){returnnewPromise(function(resolve,reject){console.log("makingpromiseA")resolve(bPromise());console.log("promiseAresolved")

Javascript:Promises + this

这个问题在这里已经有了答案:Howdoesthe"this"keywordwork,andwhenshoulditbeused?(22个答案)关闭6年前。考虑以下代码:foo:function(){varself=this;varp1=p2=someFunctionThatReturnsAPromise();Promise.all([p1,p2]).then(self.bar);}bar:function(promises){varself=this;console.log(self);}输出:undefined但如果我改为执行以下操作:foo:function(){varself=t

javascript - Angular : Pass additional parameters to chained promises

我想链接一些由服务返回的promise。只要某些返回promise的方法不需要额外的参数,这就可以工作。这是我的例子:varfirst=function(){vard=$q.defer();$timeout(function(){d.resolve("firstresolved")},100)returnd.promise;};varsecond=function(val){console.log("valueofval:",val);vard=$q.defer();$timeout(function(){d.resolve("secondresolved")},200)returnd

javascript - Promises 和通用的 .catch() 语句

我正在为我的系统编写一个API,它向服务器发送一个XHR并返回一个应该由调用者处理的promise-到目前为止一切顺利。对于每个API调用,我必须使用.then和.catch调用,但通常(大约75%的时间)是.catch引用了使用console.error简单打印的相同功能。我的问题是-有没有办法为我创建的每个promise附加一个默认的catch语句?(比如说打印到控制台),以及我想要的每个promise进一步处理拒绝,我会添加另一个.catch调用(甚至覆盖它)?每个调用都有自己的.catch的简化示例:http://jsbin.com/waqufapide/edit?js,con

javascript - Promises/A+ 实现有何不同?

规范不涵盖了promise库的哪些方面?实现之间有哪些不同?请举例说明实际差异(例如Bluebird和Q之间的差异)。 最佳答案 几乎所有。Promises/A+规范旨在实现promise互操作性,它的构建使promise库(以及现在的原生promises)可以相互交谈。这个想法是为了可以预测promise的行为方式并定义promises如何被其他库同化。引用规范:Thisspecificationdetailsthebehaviorofthethenmethod,providinganinteroperablebasewhicha