javascript - 意外的标记 '*' 在函数的参数列表之前需要一个开头的 '('
问题描述
iOS9 似乎不喜欢 javascript generators function*
。我目前正在尝试摆脱 iOS 上的承诺问题,我的代码如下所示:
...
myFunction: function() {
return this.spawn(function*() {
yield MyApp.function();
});
return;
},
...
这会在 iOS 9 上导致以下错误:
意外的标记 '*' 在函数的参数列表之前需要一个开头的 '('
您知道兼容的替代方案吗?
解决方案
iOS 10 支持生成器。如果您被 iOS 9 卡住,那么您将不得不实现自己的假生成器。生成器协议具有next
、return
、throw
和[Symbol.iterator]
方法。您只能实施您需要的那些。例如,这是一个实现[Symbol.iterator]
:
let createGenerator = values => () => ({
[Symbol.iterator]() {
let i = 0;
return {
next: () => ({
value: values[i++],
done: i > values.length
}),
// next
// return
// throw
}
}
});
let realGenerator = function*() {
yield 1;
yield 2;
yield 3;
yield 4;
};
let fakeGenerator = createGenerator([1, 2, 3, 4]);
console.log(...realGenerator());
console.log(...fakeGenerator());
推荐阅读
- java - (JAVA) 为我的自动售货机执行 while 循环
- android - 如何在 SharedPreference 中存储日期?
- python - TypeError:'NoneType' 对象不可下标 opencv-python / python face_recognition
- c# - 来自系统帐户服务的用户模拟
- c++ - aws-sdk-cpp - 在 Ubuntu 中未定义对 Aws::InitAPI 的引用
- oracle12c - Oracle删除查询优化
- .net - NEST 7:如何获取每个文档的出现次数?
- php - 在多个 WP 插件中使用相同的代码部分
- mysql - 使用spring security添加用户和角色时无法解决sql异常问题
- reactjs - Grafana Plugin - 如何从反应插件中删除指标面板