小编Jos*_*ker的帖子

将长时间运行的任务与async/await模式结合起来的正确方法是什么?

我有一个"高精度"计时器类,我需要能够启动,停止和暂停/恢复.为此,我将在互联网上找到的几个不同的例子捆绑在一起,但我不确定我是否正在使用asnyc/await正确的任务.

这是我的相关代码:

//based on http://haukcode.wordpress.com/2013/01/29/high-precision-timer-in-netc/
public class HighPrecisionTimer : IDisposable
{
    Task _task;
    CancellationTokenSource _cancelSource;

    //based on http://blogs.msdn.com/b/pfxteam/archive/2013/01/13/cooperatively-pausing-async-methods.aspx
    PauseTokenSource _pauseSource;

    Stopwatch _watch;
    Stopwatch Watch { get { return _watch ?? (_watch = Stopwatch.StartNew()); } }

    public bool IsPaused
    {
        get { return _pauseSource != null && _pauseSource.IsPaused; }
        private set
        {
            if (value)
            {
                _pauseSource = new PauseTokenSource();
            }
            else
            {
                _pauseSource.IsPaused = false;
            }
        }
    }

    public bool IsRunning { get { return !IsPaused && _task != null && …
Run Code Online (Sandbox Code Playgroud)

c# long-running-processes xamarin.ios task-parallel-library async-await

20
推荐指数
1
解决办法
1万
查看次数

防止敲除验证评估初始负载

我有一个简单的视图模型,其中包含一些必需的属性...如果相应的属性无效,我希望每个输入都突出显示红色,但我不希望在页面初始加载时显示此突出显示...仅当值更改或用户尝试保存/继续时...

现在它正在验证初始加载时的视图模型,因为我正在指定data-bind ="css:{error:name.isValid()== false}",但我不知道有任何其他方法来获取此信息动态工作(类似于jQuery不显眼的验证工作原理)......

var foo = { name: ko.observable().extend({required: true}) };

<div data-bind="css: { error: !name.isValid() }">
    <input type="text" data-bind="value: name" />
</div>
Run Code Online (Sandbox Code Playgroud)

任何关于如何使这项工作的想法将不胜感激...谢谢!

validation knockout.js

9
推荐指数
2
解决办法
9523
查看次数

moment.js,时区和夏令时

我从.Net服务返回UTC日期/时间列表,格式如下:

"2013-07-09 19:48:07 +00:00".
Run Code Online (Sandbox Code Playgroud)

在客户端上,我将每个字符串值转换为相应的基于UTC的时刻,就像这样

var fooUtc = new moment.utc(serverDateTimeString)
Run Code Online (Sandbox Code Playgroud)

在页面上,有一个下垂,其中包含用户可以更改的时区列表.这些绑定到时区对象的集合,如下所示:

{
    id: "Central Standard Time",
    label: "(UTC-06:00) Central Time (US & Canada)",
    observesDaylightSavings: true,
    baseUtcOffset: {
        asHours: -6,
        asMinutes: -360,
        asText: "-06:00"
}
Run Code Online (Sandbox Code Playgroud)

然后我显示传递所选时区偏移的每个时刻,如下所示:

fooUtc.local().zone(selectedTimeZone.baseUtcOffset.asMinutes).format()
Run Code Online (Sandbox Code Playgroud)

但是,结果没有考虑夏令时,因为来自.Net的时区数据不能区分dst和非dst偏移.

有没有办法让这个工作与moment.js或新的时刻 - 时区位?我认为可以将标准UTC偏移名称(例如:"中央标准时间")映射到给定时区的Olson数据库标识符(例如:"America/Chicago"),但如果有更简单的方法,请让我知道.

javascript timezone dst timezone-offset momentjs

8
推荐指数
1
解决办法
5739
查看次数

Bootstrap 2.3.1 popover导致父模式关闭

我遇到了一个问题,我在Bootstrap模式中显示一些数据.这个数据包含一个图标,我正在变成一个popover.当我将鼠标悬停在图标上时,弹出窗口显示并且一切正常,但是当我离开图标时,不仅弹出窗口关闭,而且父模式也关闭.

我认为这与此处描述的问题相同.但是,发布的解决方案对我不起作用.我正在捕获popover的"隐藏"事件,但是既没有设置e.cancelBubble = true,也没有调用e.stopPropagation()来阻止父模式关闭.

我目前没有在我面前的代码,但这是一个基于我的一般回忆的粗略模型...

HTML


<!-- ko with: myFoo -->
<div class="modal hide fade" data-bind="visible: isOpen">
    <div class="modal-header">
        <button type="button" class="close" data-bind="click: close">&times;</button>
        <h3>Title Bar!</h3>
    </div>
    <div class="modal-body">
        <!-- dynamically generated modal content goes here, including... -->
        <table>
            <tr>
                <td data-bind="popover: $data">
                    <i class="icon-question-mark" data-content="la la la..." />
                </td>
            </tr>
        </table>
    </div>
    <div class="modal-footer">
        <a href="#" class="btn" data-bind="click: close">Close</a>
    </div>
</div>
<!-- /ko -->
Run Code Online (Sandbox Code Playgroud)

Knockout Custom Binding Handler


ko.bindingHandlers.popover = {

    init: function(element)
    {
        $(element).children().andSelf().on("mousenter", "[data-content]"function() { …
Run Code Online (Sandbox Code Playgroud)

jquery modal-dialog popover twitter-bootstrap

5
推荐指数
1
解决办法
2309
查看次数

React.memo 是否创建单例组件或者可以用于创建多个独立实例

当在 React.memo 中包装组件函数时,结果是单例(类似于 reselect 的 createSelector 方法),这意味着它主要是为单个实例设计的吗?或者对生成的记忆化组件的每个引用都会创建自己单独的记忆化实例吗?

示例:这是 React.memo 的有效使用吗?

const Item = React.memo((props) => <li>...</li>);

// App
render(): {
  const { items } = this.props
  return (
    <ul>
      {items.map((item) => <Item {...item} />)}
    </ul>
  );
}
Run Code Online (Sandbox Code Playgroud)

performance memoization reactjs

5
推荐指数
0
解决办法
605
查看次数

如何在 Jest 中模拟 AbortController

我有一个Redux发出多个 API 请求的传奇。我用来takeLatest确保如果触发新操作,任何先前运行的传奇都会被取消。但是,这不会取消正在进行的请求,并且我们遇到了最大连接限制问题。

为了解决这个问题,我在 saga 中创建一个 AbortController 并将其传递给每个请求,以便在取消 saga 时可以中止它们(见下文):

export function* doSomething(action: Action): SagaIterator {
    const abortController = new AbortController();

    try {
        const fooResponse: FooResponse = yield call(getFoo, ..., abortController);
        ...
        const barResponse: BarResponse = yield call(getBar, ..., abortController);
    }
    catch {
        .. handle error
    }
    finally {
        if (yield cancelled()) {
            abortController.abort(); // Cancel the API call if the saga was cancelled
        }
    }
}

export function* watchForDoSomethingAction(): SagaIterator {
  yield takeLatest('action/type/app/do_something', doSomething);
} …
Run Code Online (Sandbox Code Playgroud)

javascript mocking typescript jestjs redux-saga

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