即使返回结果,AnuglarJS 中的结果仍未定义
Result undefined in AnuglarJS even though result is returned
我需要从上面的操作接收值,该操作使用 HTML 表单从用户收集数据并将其传递给外部 JavaScript 文件,该文件在处理值后 return 是一个字符串.这个 JavaScript 文件已经用 Babel 转译为来自 ES6 的一个包,它使用 Promises 来处理值和 return 字符串结果。现在,我已经使用 .then
让 AngularJS 在发出 $http
调用之前等待响应。结果返回,但它没有用作传递给我的 .then
运算符的值。请问,我该如何解决这个问题?下面是我的代码片段:
var numBits = $scope.getCertKeySize();
try{
CreateRequest($scope.fields['env'], numBits).then(function(result){
$scope.fields['key'] = result; //result comes back undefined
var jsonMsg = $scope.fields;
$http({
method: 'POST',
url: '/requestedStuff',
data: jsonMsg,
headers: {'Content-type': 'application/json'}
}).then(function successCallback(response){
$scope.disableSubmit = true;
});
});
}catch(err){
return false;
}
function CreateRequest($scope.fields['env'], numBits){
var fromCSForm = document.fromLiveApp;
var userId = fromCSForm.txtUserId.value;
var department = fromCSForm.txtDepartment.value;
return createFromExternalJSFile(userId, department);//returns a promise with the result
}
这是根据要求从 createFromExternalJSFile 中获取的示例代码:
function createFromExternalJSFile(userId, department) {
return Promise.resolve().then(function () {
return createPKCS10Internal(userId, department);
}).then(function () {
var resultString = "-----BEGIN CERTIFICATE REQUEST-----\r\n";
resultString = "".concat(resultString).concat(formatPEM((0, _pvutils.toBase64)((0, _pvutils.arrayBufferToString)(pkcs10Buffer))));
resultString = "".concat(resultString, "\r\n-----END CERTIFICATE REQUEST-----\r\n");
});
}
请原谅我的无知,因为我对 AngularJS 和 JavaScript 不是很了解。谢谢!
您应该 return 来自上一个 .then 函数的值,例如:
function createFromExternalJSFile(userId, department) {
return Promise.resolve().then(function () {
return createPKCS10Internal(userId, department);
}).then(function () {
var resultString = "-----BEGIN CERTIFICATE REQUEST-----\r\n";
resultString = "".concat(resultString).concat(formatPEM((0, _pvutils.toBase64)((0, _pvutils.arrayBufferToString)(pkcs10Buffer))));
resultString = "".concat(resultString, "\r\n-----END CERTIFICATE REQUEST-----\r\n");
return resultString;
});
}
我需要从上面的操作接收值,该操作使用 HTML 表单从用户收集数据并将其传递给外部 JavaScript 文件,该文件在处理值后 return 是一个字符串.这个 JavaScript 文件已经用 Babel 转译为来自 ES6 的一个包,它使用 Promises 来处理值和 return 字符串结果。现在,我已经使用 .then
让 AngularJS 在发出 $http
调用之前等待响应。结果返回,但它没有用作传递给我的 .then
运算符的值。请问,我该如何解决这个问题?下面是我的代码片段:
var numBits = $scope.getCertKeySize();
try{
CreateRequest($scope.fields['env'], numBits).then(function(result){
$scope.fields['key'] = result; //result comes back undefined
var jsonMsg = $scope.fields;
$http({
method: 'POST',
url: '/requestedStuff',
data: jsonMsg,
headers: {'Content-type': 'application/json'}
}).then(function successCallback(response){
$scope.disableSubmit = true;
});
});
}catch(err){
return false;
}
function CreateRequest($scope.fields['env'], numBits){
var fromCSForm = document.fromLiveApp;
var userId = fromCSForm.txtUserId.value;
var department = fromCSForm.txtDepartment.value;
return createFromExternalJSFile(userId, department);//returns a promise with the result
}
这是根据要求从 createFromExternalJSFile 中获取的示例代码:
function createFromExternalJSFile(userId, department) {
return Promise.resolve().then(function () {
return createPKCS10Internal(userId, department);
}).then(function () {
var resultString = "-----BEGIN CERTIFICATE REQUEST-----\r\n";
resultString = "".concat(resultString).concat(formatPEM((0, _pvutils.toBase64)((0, _pvutils.arrayBufferToString)(pkcs10Buffer))));
resultString = "".concat(resultString, "\r\n-----END CERTIFICATE REQUEST-----\r\n");
});
}
请原谅我的无知,因为我对 AngularJS 和 JavaScript 不是很了解。谢谢!
您应该 return 来自上一个 .then 函数的值,例如:
function createFromExternalJSFile(userId, department) {
return Promise.resolve().then(function () {
return createPKCS10Internal(userId, department);
}).then(function () {
var resultString = "-----BEGIN CERTIFICATE REQUEST-----\r\n";
resultString = "".concat(resultString).concat(formatPEM((0, _pvutils.toBase64)((0, _pvutils.arrayBufferToString)(pkcs10Buffer))));
resultString = "".concat(resultString, "\r\n-----END CERTIFICATE REQUEST-----\r\n");
return resultString;
});
}