iOS9似乎不喜欢JavaScript生成器function*
。我目前正在尝试摆脱iOS上的Promise问题,我的代码如下所示:
...
myFunction: function() {
return this.spawn(function*() {
yield MyApp.function();
});
return;
},
...
在iOS 9上导致以下错误:
意外的标记'*'预期在函数的开头'('参数列表
您知道兼容的替代方法吗?
iOS 10支持生成器。如果您坚持使用iOS 9,则必须实现自己的fake生成器。生成器协议具有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());