Tag: ecmascript 6

如何在reactjs和meteor中显示加载器?

我有一个页面,其中3个食谱列出更多的button。 点击更多button时,会列出更多的3个配方。 我想要做的是在列出更多3食谱之前,我想显示一个微调/加载器图标,但我只能改变button的文本。 我怎样才能显示加载器图标,只要更多的button被点击,并在这些额外的3食谱列出。 我正在使用meteorjs和reactjs。 我的代码是 export default class Home extends Component { constructor(){ super(); this.state = { limit:3 , loading:false } this.addMore = this.addMore.bind(this); } getMeteorData(){ let data = {}; data.recipes = []; data.recipes = Recipes.find({},{sort:{createdAt:-1}}).fetch(); let recipeHandle = Meteor.subscribe('recipelist',this.state.limit); if(recipeHandle.ready()){ data.recipes = Recipes.find({},{sort:{createdAt:-1},limit:this.state.limit}).fetch(); } return data; } addMore(){ this.setState({ limit:this.state.limit + 3, loading: […]

JavaScript ES6模块OnLoad处理程序实现

我有一个NodeJS服务器应用程序被分割成ES6模块丢失。 我正在尝试创build一种“加载模块处理程序”,这是主模块中的一个函数,其他模块需要注册一个callback函数,在主模块完全初始化后执行。 我使用Babel(带有babel-preset-es2015 )将ES6模块转换为可执行的JavaScript。 为了演示这个问题简而言之,我创build了2个示例文件。 文件index.js (应用程序条目,主要模块): import * as js2 from "./js2.js"; let toCall = [], // this array handles callbacks from other modules initialized = false; // flag export function onInit (cb) { // registers cb to execute after this module is initialized if (initialized) { cb(); return; } toCall.push(cb); } function done […]

在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, […]

传递节点模块的上下文

我使用下面的代码部分工作,因为有内容不通过的情况下。 var app = require('buildersApps'); app.addContent({ folderPath: __dirname + '/content/' }); app.start(); 为了解决这个问题(上下文),我使用bind()方法添加下面的代码,但是我的问题是,是否有更好的/更简洁的方法来实现呢? var app = require('buildersApps'); app.addContent({ folderPath: __dirname + '/content/' }).then(app.start.bind(app));

ES6 – 并行地为多个用户帐户提出多个请求

我正在构build一个express.js Web应用程序,并且我需要为多个用户帐户并行请求多个请求,并返回一个对象。 我尝试使用generators和Promise.all但我有2个问题: 我不会并行运行所有用户帐户。 我的代码在响应已经返回后结束。 这是我写的代码: function getAccountsDetails(req, res) { let accounts = [ '1234567890', '7856239487']; let response = { accounts: [] }; _.forEach(accounts, Promise.coroutine(function *(accountId) { let [ firstResponse, secondResponse, thirdResponse ] = yield Promise.all([ firstRequest(accountId), secondRequest(accountId), thirdRequest(accountId) ]); let userObject = Object.assign( {}, firstResponse, secondResponse, thirdResponse ); response.accounts.push(userObject); })); res.json(response); }

推迟与巴贝尔import

我正在一个基于ReactJS的大型网站上工作,需要编写一些testing,我可以推迟加载各种模块,因为我需要先build立Sinon。 基本设置看起来像这样 const assert = require('chai').assert; const sinon = require('sinon'); const reducerUtils = require('../../app/utils/reducerUtils'); const connectToReducerStub = sinon.stub( reducerUtils, 'connectToReducer', (stateMap, actionMap) => { console.log(`Connecting to reducer`); } ); 在这一点上,我只需要导入一个组件,试图使用reducerUtils.connectToReducer我已经reducerUtils.connectToReducer ,但我的问题是,如果我喜欢在其他地方的代码库: import MyComponent from '../../app/components/myComponent.jsx'; 导入是作为第一件事(在所有其他事情之前)运行,使得导入和调用reducerUtils.connectToReducer发生之前,我把它存根。 另一方面,试图通过使用require来推迟它似乎不起作用: const MyComponent = require('../../app/components/myComponent.jsx'); 这里发生的是MyComponent只是undefined 。 我正在使用ES6类来定义我的组件: import react from 'react'; import connectToReducer from '../../utils/reducerUtils'; class MyComponent { […]

如何在ES5中对recursion匿名函数应用TCO(尾调用优化)

如果我可以通过一个名为recursion函数的tco,应该有一种方法来让tco匿名recursion函数。如果有一种方法,请解释下面如何做到这一点是我的recursion函数和TCO函数。 function recursive(length, callback) { tco((function (i, sum) { var args = arguments; if (i > length) { console.log("break statement"); callback(sum) return sum } else { return args.callee(i + 1, sum + i) } }))(0, 0) } function tco(f) { var value; var active = false; var accumulated = []; return function accumulator() { accumulated.push(arguments); […]

在Node.js中将三个不同的函数映射到Observable

我是Rxjs的新手。 如果可能,我想遵循最佳做法。 我正在执行三个不同的函数在可观察的返回相同的数据。 在“数据stream”概念之后,我一直认为我需要将这个可观察对象分成三个stream,并继续进行。 这是我的代码,所以我可以停止抽象地说话: // NotEmptyResponse splits the stream in 2 to account based on whether I get an empty observable back. let base_subscription = RxNode.fromStream(siteStream).partition(NotEmptyResponse); // Success Stream to perform further actions upon. let successStream = base_subscription[0]; // The Empty stream for error reporting let failureStream = base_subscription[1]; //Code works up until this […]