小编Tim*_*ope的帖子

优雅地处理"等待"Javascript承诺的拒绝

ES2017 async/await的一个很好的模式是:

async function () {
  try {
    var result = await some_promised_value()
  } catch (err) {
    console.log(`This block would be processed in
      a reject() callback with promise patterns
      but this is far more intuitive`)
    return false // or something less obtuse
  }
  result = do_something_to_result(result)
  return result;
}
Run Code Online (Sandbox Code Playgroud)

能够处理这样的错误非常好.但是我想异步获取一个值,我想保护它不被重新分配(例如:数据库会话),但我仍然想使用async/await模式(纯粹因为我认为它更直观).

以下将不起作用,因为const是块作用域:

async function () {
  try {
    const result = await get_session()
  } catch (err) {
    console.log(`This block should catch any
      instantiation errors.`)
    return false
  }
  // Can't get at …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous node.js async-await es6-promise

17
推荐指数
2
解决办法
6730
查看次数

如何在 svelte/sapper 组件中相对于当前页面进行链接?

我在工兵模板中有一个带有分页的组件。目前,所有链接的行为都好像它们相对于根(localhost:3000/在本例中),无论 href 是否采用形式page/page, (我什至尝试过./page。)

因此,对于我只想修改查询字符串的分页,我必须将当前视图的完整路径传递到 href 组件中,这有点痛苦。我做错了什么导致相对链接不起作用吗?(如果有一种方法可以让它们goto()直接调用,那就更好了,我有一个“转到页面:[x]”输入。)如果没有,是否有推荐的方法从组件内部获取当前路径,以便我可以抛出在分页组件中?

svelte sapper

6
推荐指数
1
解决办法
1980
查看次数

ES6 Fat Arrow和圆括号`(...)=>({...})`

我一直在研究一些Graph QL/React/Relay示例,我遇到了一些奇怪的语法.

在Graph QL Objects中定义字段时,使用以下语法:

const xType = new GraphQLObjectType({
  name: 'X',
  description: 'A made up type for example.',
  fields: () => ({
    field: {/*etc.*/}
  })
});
Run Code Online (Sandbox Code Playgroud)

从我收集的内容来看,这只是定义一个匿名函数并将其分配给xType.fields.该匿名函数返回包含字段定义的对象.

我假设图形QL模式机制工作,这必须被定义为返回对象而不是简单对象的函数.但令我困惑的部分是花括号周围的括号.

这是为了区分对象定义和函数定义吗?这是为了清晰的读者的缘故吗?

谷歌搜索发现的唯一类似语法是在airbnb风格指南中,它似乎是一个可读性/清晰度的东西.

只是寻找超出我的假设的确认或解释,因为我开始更多地使用Graph QL.

javascript relay ecmascript-6 reactjs graphql

5
推荐指数
2
解决办法
2170
查看次数

当仅更新1个条目时,流星反应性重新绘制每个循环中的每个实体

该应用程序部署在此处:memoryapp.meteor.com 源代码在git repo中提供:https://github.com/SnappyCroissant/memoryapp

要重置应用运行

Cards.update({}, {$set: {state: 'play'}}, {multi: true})
Run Code Online (Sandbox Code Playgroud)

从控制台.

我知道让客户端访问这样的集合是很糟糕的,应用程序远没有准备就绪我只是通过Meteor找到了解决方法.

目前,只要在卡片中运行任何更新,整个DOM重绘除了那些我称之为持久性的元素.据我所知,虽然元素只应在更新时重绘,或者我误解了反应的工作方式?

脚本中发生的唯一真正的动态变化是'state'卡中对象的属性正在被更改.然而,它重绘每个属性和每个DOM元素,除非明确声明不.

是因为它们都被传递到一个数组中的模板吗?如果是这样的话,最好的替代方法是什么.

该结构是有点大杂烩,因为它是一个学习经验,都为这一问题的重要位(据我所知)住在client/memory.jsserver/model.js

node.js meteor

4
推荐指数
1
解决办法
517
查看次数