我提交了一个关于堆栈溢出的问题,询问如果以前的版本已经在执行,如何停止putTestQuestionResponses()函数的执行.

答案是添加一个处理标志,它位于代码的第2行.

你能告诉我为什么这里用"let"而不是"var"吗?

var promisePutTestQuestion;
let processing = false;

onEnter: ['$interval', 'questionService',
         ($interval, qus: IQuestionService) => {
  promisePutTestQuestion = $interval(() => {
     if (processing)
         return;
     processing = true;
     qus.putTestQuestionResponses()
     .then(() => processing = false)
  }, 5 * 1000);
}],
onExit: ['$interval', ($interval) => {
        $interval.cancel(promisePutTestQuestion);
}]

推荐答案

var声明是函数范围的,let声明是块范围的.

更多细节见https://basarat.gitbooks.io/typescript/content/docs/let.html.

Typescript相关问答推荐

如何在类型脚本中声明对象其键名称不同但类型相同?

无法从应用程序内的库导入组件NX Expo React Native

如何为ViewContainerRef加载的Angular组件实现CanDeactivate保护?

TypeScript将键传递给新对象错误

使用React处理Websocket数据

无法将select选项的值设置为ngFor循环中的第一个元素

无法从Chrome清除还原的初始状态数据

带switch 的函数的返回类型的类型缩小

被推断为原始类型的交集的扩充类型的交集

为什么我的一个合成函数不能推断类型?

Cypress页面对象模型模式.扩展Elements属性

如何避免推断空数组

在打印脚本中使用泛型扩展抽象类

如何从输入中删除值0

编译TypeScrip项目的一部分导致错误

API文件夹内的工作员getAuth()帮助器返回:{UserID:空}

如何在不违反挂钩规则的情况下动态更改显示内容(带有状态)?

如何键入对象转换器

使用NextJS中间件重定向,特定页面除外

覆盖高阶组件中的 prop 时的泛型推理