Articles of es6 promise

如何停止使用ES6承诺的asynchronous调用

我熟悉蓝鸟的承诺,在那个.each()是用来一次获取所有logging,并迭代一个logging,以便我能够将该logging传递到另一个函数,并获取数据。 但是在ES6中,我找不到像(.each())这样的函数。 请为我提供任何同步执行的解决scheme。谢谢..

存根nodejs承诺在链中返回错误

我nodejs使用nodejs中的nodejs ,也是在testing它们。 我已经单独testing了各个模块,但是当涉及testingchain of promises ,我遇到了一些麻烦。 我尝试了下面的例子,在npm页面上find了sinon-as-promised的例子,但似乎没有设法控制stream程并触发链中第一个promise的错误。 我正在使用mocha , chai和sinon for作为我sinon的testing, sinon-as-promised和chai-as-promised 。 我试图testing这个模块: 'use strict'; var mySQS = require('./modules/sqs/sqs-manager'); var sWebHook = require('./modules/webhooks/shopify/webhooks'); var main = {}; main.manageShopifyWebhook = function (params, callback) { sWebHook.verify(params.srcHmac, params.rawBody, params.shopName.split('.myshopify.com')[0], params.productId) .then(function(data) { var body = { "params": { "productId": data.productId, "shopName": data.shopName }, "job": "call-update-item" }; mySQS.create_Queue(body) […]

在Promise链中提取函数

我想通过提取出一些function来重构Promise链。 目前我有 const getData = (uuid) => { return new Promise((resolve) => { fetch( // go fetch stuff ) .then((response) => { if (!response.ok) { return resolve(false); } return response; }) .then(fetchres.json) .then(response => { // Do more stuff that requires resolves that I will also want to refactor }) .catch(err => { console.log(err); resolve(false); […]

Node.js和ES6

我想开始在Node.js上使用这个ES6,但我不能让它工作。 我正在添加node test.js –harmony标志,但是我仍然遇到了错误的语法错误。 它甚至不传递第一行代码: import env from 'node-env-file' import api from '../src' 我得到这个 (function (exports, require, module, __filename, __dirname) { import env from 'node-env-file' ^^^^^^ SyntaxError: Unexpected token import 我怎样才能让我的Node.js使用这种types的语法。

通过承诺返回ES6代理时堆栈溢出

我试图拦截ES6代理上的方法调用,以便能够使用从代理获得的信息在两者之间进行操作。 现在在我的情况下,在创build和从某种工厂返回代理之前,有相当多的东西正在进行。 因为所有这些东西,我决定将先决条件包装到promise函数中,这样我就可以将代理创build权链接到它上面,并通过promise链返回结果代理。 以下是重现问题的代码: proxy_factory.min.js 'use strict'; // require('harmony-reflect'); class ProxyFactory { create(options) { const self = this; const handler = { get(target, propertyKey, receiver) { if (propertyKey === 'then') { return function proxyPromiseWrapper(thenCallback) { const innerProxy = self.create(options); return thenCallback(innerProxy); }; } return function resourceFunctionProxy() { const callContext = { target: target, method: propertyKey, […]

用Promises处理Mongoose错误

我在我的Nodejs,REST API中使用mongoose与本地ES6承诺进行数据库pipe理。 我无法finderror handling的最佳做法。 我有一段代码看起来像这样: Cities.findOne({'id': someid}).then((city) => { if (!city) throw 'No city found'; //modify city.embedded.dynamic.field return city.save(); }).then((city) => { if (!city) throw 'City not saved'; res.send(city); }).catch((err) => { console.log(err); }); 是否需要检查city.save()的返回值是否未定义? 或者将在保存中的错误被捕获? 在文档中不清楚save()是否可以像mongoose查询有时那样返回undefined 。 任何帮助,将不胜感激。 编辑 :我使用findOne和手动修改时间表,因为mongoose不能模型dynamic以及embedded架构。

顺序承诺,同时传递价值

我正在玩命运API,我遇到了一些问题。 如果我请求一个字符的详细信息,它会返回一个对象,但是这些值是ID,然后需要将其传递给另一个API调用“清单”,该清单返回该ID的对象。 我正在使用'request-promise'来进行API调用,但这意味着我不得不嵌套调用,我不觉得高兴。 我需要保留一些来自第一个请求的数据,然后再打一个电话来获得最后一个数据。 例如: request('destiny-character-api') .then(character => { // Keep some of the data from character, eg className request(`destiny-manifest-api/${character.item}`) .then(item => { // Overwrite character.item with the value of item.name return item; }); }); 我需要一种方法来阻止第二个请求,直到第一个请求返回,然后将返回值传递给第二个请求。 谢谢

Node.js – 对promise.all()后的每个结果继续承诺链

我在承诺链中使用Promise.all() 。 Promise.all()中的每个promise都返回一个string。 即时通讯的问题是,Promise.all() 返回Promise对象到下一个承诺,我想继续对每个string承诺链。 下面是一个例子: …. return Promise.all(plugins); }) .then(function(response) { console.log(response) …. response如下所示: [ 'results from p1', 'results from p2' ] 有没有办法继续每个结果的承诺链,而不是继续使用包含所有结果的单个对象?

出口承诺链的快速路线方法的最佳途径?

我有一个正在被重构使用ES6承诺避免callback地狱的API路线。 在成功转换为承诺链后,我想将我的.then()函数导出到单独的文件以保持清晰和清晰。 路线文件: 函数文件: 这工作正常。 然而,我想要做的是将在类的constructor()函数中声明的函数移动到独立的方法,它可以引用由构造函数实例化的值。 这样一切都更好。 但是,当我这样做时,我遇到了范围问题 – this是没有定义,等等。这样做的正确方法是什么? ES6适合在这里使用,还是应该使用其他的结构? 原始代码: 路线… .post((req, res) => { let SubmitRouteFunctions = require('./functions/submitFunctions.js'); let fn = new SubmitRouteFunctions(req, res); // ******************************************* // ***** THIS IS WHERE THE MAGIC HAPPENS ***** // ******************************************* Promise.all([fn.redundancyCheck, fn.getLocationInfo]) .then(fn.resetRedundantID) .then(fn.constructSurveyResult) .then(fn.storeResultInDB) .then(fn.redirectToUniqueURL) .catch((err) => { console.log(err); res.send("ERROR SUBMITTING YOUR RESULT: ", […]

尝试获取承诺nodejs时没有任何解决办法

我使用fetch来触发api代码。 const getData = (workspaceId, start, end, projectId, page, tmpData) => { return new Promise((resolve,reject) => { let result = [] if (tmpData !== null){ result.push(tmpData) } fetch('https://toggl.com/reports/api/v2/details?workspace_id='+workspaceId +'&since='+start+'&until='+end+'&user_agent=api_test&project_ids='+projectId +'&page='+page, { method: 'get', headers: { 'Authorization': 'Basic '+new Buffer(token.api_token+':api_token').toString('base64') } }).then(res=>{ return res.json() }).then(json=>{ if (json.data.length > 0){ result.push(json) console.log('on page '+page) getData(workspaceId, start, end, […]