我有一个方法来处理来自google javascript客户端(Gapi)的响应:
var processResponse = function(response) {
result._state = 'loaded';
response._epoch = (new Date()).getTime();
...有几次我得到了以下错误:
TypeError: Cannot assign to read only property '_epoch' of false
at processResponse (http://0.0.0.0:9000/scripts/services/haparaapi.js:110:31)
at wrappedCallback (http://0.0.0.0:9000/bower_components/angular-scenario/angular-scenario.js:20892:81)
at http://0.0.0.0:9000/bower_components/angular-scenario/angular-scenario.js:20978:26
at Scope.$eval (http://0.0.0.0:9000/bower_components/angular-scenario/angular-scenario.js:21967:28)
at Scope.$digest (http://0.0.0.0:9000/bower_components/angular-scenario/angular-scenario.js:21796:31)
at Scope.$apply (http://0.0.0.0:9000/bower_components/angular-scenario/angular-scenario.js:22071:24)
at http://0.0.0.0:9000/bower_components/angular-gapi/modules/gapi-client.js:121:32
at https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en_GB.hE_reuZ6VdE.…/ed=1/am=AQ/rs=AGLTcCPj66Crj6soG8dKJE8lBSc_RPXXKA/cb=gapi.loaded_0:604:138
at https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en_GB.hE_reuZ6VdE.…/ed=1/am=AQ/rs=AGLTcCPj66Crj6soG8dKJE8lBSc_RPXXKA/cb=gapi.loaded_0:579:311
at Object.<anonymous> (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en_GB.hE_reuZ6VdE.…1/ed=1/am=AQ/rs=AGLTcCPj66Crj6soG8dKJE8lBSc_RPXXKA/cb=gapi.loaded_0:163:76) 这个bug通常不会发生,所以我没有设法记录下响应的实际情况。
这个错误是什么意思?我不应该为响应赋值吗?
发布于 2014-10-21 12:06:25
看起来问题在于你的processResponse()回调实际上被赋予了一个false的值。因此,从本质上讲,您正在尝试将_epoch属性赋值为False值。
从手册中:
请求成功或失败时执行的回调函数。jsonResp包含解析为JSON的响应。如果响应不是JSON,则该字段将为。
当您在严格模式('use strict')下运行javascript时,它将引发一个TypeError,就像您遇到的那样:
'use strict';
var processResponse = function(response) {
response._epoch = (new Date()).getTime();
};
processResponse(false); // Uncaught TypeError: Cannot assign to read only property '_epoch' of false JSFiddle:http://jsfiddle.net/0tq6mobm/
建议您在尝试将时间戳分配给response之前检查response的值。
https://stackoverflow.com/questions/26413084
复制相似问题