Tag: es6 promise

链接在瀑布承诺

我一直在玩一些链接一系列function的不同方法,而且似乎找不到一个我特别喜欢的方法。 以下是我最后一个解决的问题,但我仍然不热衷于此。 有人可以build议一个更干净,更简洁的模式? 我不想selectAsync.js或库。 [ this.connectDatabase.bind(this), this.connectServer.bind(this), this.listen.bind(this) ].reduce( (chain, fn) => { let p = new Promise(fn); chain.then(p); return p; }, Promise.resolve() ); PS。 任何其他的提示都比欢迎。

Uncaught(在promise中)TypeError:无法读取未定义的属性'setState'

对我来说,这个错误是相当经常使用axios.can't setstate与未定义的属性。第八我得到实际的回应。我很困惑。任何解决scheme将不胜感激。 json回复由axios回复 [ { main: 1, left: 0, right: 0, top: 0, bottom: 0, cid: 6, '$created': '2016-10-21T11:08:08.853Z', '$updated': '2016-10-22T07:02:46.662Z', stop: 0 } ] code.js import React from 'react'; import ReactDOM from 'react-dom'; import axios from 'axios'; export default class Main extends React.Component{ constructor(props){ super(props); this.state = { status:[] } } componentDidMount(){ this.getdata() } […]

应该由Promise调用同步代码,然后创build一个新的Promise

我已经实现了一些代码,其中asynchronous代码后面跟着一些同步函数。 例如: function processSomeAsyncData() { asyncFuncCall() .then(syncFunction) .catch(error); } 如果我理解正确的then也是一个承诺。 那么我是否应该在同步代码中创build一个承诺? function syncFunction() { const p = new Promise (function (resolve, reject) { //Do some sync stuff … resolve(data); } return p; } 如果没有必要,如果发生错误,如何拒绝来自同步代码的承诺?

使用await时意外的标识符

我目前正在尝试使用asynchronous/等待一个函数,要求循环是同步的。 这是function: async channelList(resolve, reject) { let query = ['channellist'].join(' '); this.query.exec(query) .then(response => { let channelsRaw = response[0].split('|'); let channels = []; channelsRaw.forEach(data => { let dataParsed = ResponseParser.parseLine(data); let method = new ChannelInfoMethod(this.query); let channel = await method.run(dataParsed.cid); channels.push(channel); }); resolve(channels); }) .catch(error => reject(error)); } 当我尝试运行它时,我得到这个错误: let channel = await method.run(dataParsed.cid); ^^^^^^ […]

无法解决承诺时使用asynchronous与巴贝尔和ES6诺言等待

我有以下节点应用程序包含一个asynchronous函数,等待ES6的承诺。 async function test(id){ try { let val = await Promise.resolve(id); console.log("val: " + val); } catch (error) { console.log("error: " + error); } } test(1); 结果= val:未定义 预期结果:val:1 我用gulp-babel把它编译成ES5。 我有以下设置在吞咽任务: .pipe(babel({ optional: ["es7.asyncFunctions"] })) 在npm安装babel之后,我也需要“babel / polyfill”。 运输代码: function test(id) { var val; return regeneratorRuntime.async(function test$(context$1$0) { while (1) switch (context$1$0.prev = context$1$0.next) { […]

Javascript运行asynchronous代码的每个项目的循环与承诺

我有一个函数,获取一个对象传入它的密钥和数据是一个数组。 我必须调用API来获取额外的信息,然后将其添加回到对象中,并返回整个对象。 我的第一个方法是不正确的,因为我试图从.then()传递数据,但这是错误的做法。 function asignChecklistItems(taskArray) { // get all the people's tasks passed in return new Promise(function(resolve, reject) { var promises = [] // Task Array: {"Person":[tasks,tasks,tasks]} for (var person in taskArray) { var individualTaskPerson = taskArray[person] // get the person's tasks for (var individualTask in individualTaskPerson) { // here we get each individual task […]

正确的方法来堆栈选项承诺

用承诺收集来自数据库的所有数据的适当或最好的方法是什么,但使用本地Node承诺。 目标只是提出select什么: const allPromises = []; const selected = { sectionA: true, sectionB: false, sectionCIds: [ 1, 2, 4 ], }; if (selected.sectionA) { allPromises.push(getSectionADataFromDbPromise()); } if (selected.sectionB) { allPromises.push(getSectionBDataFromDbPromise()); } if (selected.sectionCIds.length > 0) { allPromises.push(selected.sectionCIds .map(getSectionCDataFromDbPromise) ); } Promise.all(allPromises) .then((allResults) => { if (selected.sectionA) { dataA = allResults[0]; } if (selected.sectionA) { dataB […]

在forEach循环中保证

在一个Node应用程序中,我需要以同步的方式迭代一些项目,但循环内的一些操作是asynchronous的。 我的代码现在看起来像这样: someAPIpromise().then((items) => { items.forEach((item) => { Promise.all[myPromiseA(item), myPromiseB(item)]).then(() => { doSomethingSynchronouslyThatTakesAWhile(); }); } } 当这个items是1的数组的时候,这会有奇效。但是,一旦有多个项目, promise.all()就会立刻为数组中的每个项目开始,而不用等待循环中的操作结束。 所有这一切…如何确保数组中的每个项目的整个操作同步运行(即使某些操作是asynchronous并返回一个承诺)? 非常感谢! ñ

函数适用于Promises

我正在使用蓝鸟在Node.js中开发一个基于承诺的项目,而另一个项目则是由ES6提供的本地承诺。 在这两个中,我有一个链,我在以下forms查询数据库: some_function(/*…*/) .then(function () { return query("SELECT `whatever` FROM `wherever` ") }) .then(/*…*/) 请注意, query显然返回parsing为查询结果的承诺。 这在几个链中重复,我正在寻找一种方法来清理未使用的函数包装。 我自然使用Function.prototype.apply() ,但在这种情况下,当我尝试: .then(query.apply(this, ["SELECT * FROM … "])) .then(function(rows){ /*…*/ }) 链中的下一个函数将rows undefined为undefined 。 谢谢你。 你的帮助表示赞赏。

在节点js失败后,重试自己承诺

我想重申我的要求。 我想启动我的刷新,如果我总是有401错误作为循环:(如果我有401循环刷新,直到200) 我试过这个: const request = require('request'); let conf = require('../conf'); let core_service = require('coreService'); let self = module.exports = { get_count_questions: function() { return new Promise((resolve, reject) => { request({ method: 'GET', uri: 'http://api/count-questions', auth: { 'bearer': conf.token }, json: true }, function (error, response, body) { if (!error && response.statusCode === 200) { […]