我正在尝试使用Transcrypt的fetch API。
来源:
headers = {
"Access-Control-Request-Method": "GET",
"Access-Control-Request-Headers": "origin, x-requested-with",
"Origin": "https://bar.com/"
}
args = {
"method":"OPTIONS",
"headers":headers
}
fetch("https://foo.com/",args).then(
lambda response: print(response),
lambda err: print(err)
)汇编成:
var headers = dict ({'Access-Control-Request-Method': 'GET', 'Access-Control-Request-Headers': 'origin, x-requested-with', 'Origin': 'https://bar.com/'});
var args = dict ({'method': 'OPTIONS', 'headers': headers});
fetch ('https://foo.com/', args).then ((function __lambda__ (response) {
return print (response);
}), (function __lambda__ (err) {
return print (err);
}));指纹:
TypeError: Failed to execute 'fetch' on 'Window': Iterator is not an object.如果我从编译的代码中删除dicts,它将运行。
如何编译成正确的Javascript对象而不是dict?
发布于 2018-05-19 16:34:48
现在明白了。
事实证明:
通常,Python {.}文字被编译为dict ({.}),以包含Python的特殊属性和方法,例如迭代器。当杂注('jsiter')处于活动状态时,一个Python{.}文字被编译成一个裸的{.},没有特殊的属性或方法。仍然能够迭代来自Python的这样一个裸JavaScript对象的属性,当杂注 ('jsiter')处于活动状态时,用于.在..。从字面上翻译为JavaScript (var .在.)。该实用程序的主要用例是方便地遍历元类的新方法中的类属性。作为一种更灵活但不太方便的选择,语用 ('js','{}',‘.’‘)可以使用。
因此,守则应该是:
__pragma__('jsiter')
headers = {
"Access-Control-Request-Method": "GET",
"Access-Control-Request-Headers": "origin, x-requested-with",
"Origin": "https://bar.com/"
}
args = {
"method":"OPTIONS",
"headers":headers
}
__pragma__('nojsiter')https://stackoverflow.com/questions/50427012
复制相似问题