javascript - 即使返回结果,AnuglarJS 中的结果也未定义

标签 javascript angularjs pkcs#10


我需要从上面的操作接收值,该操作使用 HTML 表单从用户收集数据并将其传递到外部 JavaScript 文件,该文件在处理值后返回一个字符串。这个 JavaScript 文件已经通过 Babel 转译为 ES6 的 bundle ,它使用 Promises 来处理值并返回字符串结果。现在,我使用 .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 不太了解。谢谢!

最佳答案

您应该返回最后一个 .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;
  });
}

关于javascript - 即使返回结果,AnuglarJS 中的结果也未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58876481/

相关文章:

javascript - 如何将事件监听器结果输出到变量?

javascript - 比较angularjs指令中的两个字段

javascript - AngularJS 与 Bootstrap 导航栏一起用于单页应用程序

java - 如何在 Android 上使用 KeyStore 创建证书签名请求?

javascript - 使用javascript获取两个字符串之间的日差

javascript - 动态Google柱形图

javascript - 初学者 : Setting up React Gantt chart using google charts

javascript - 如何比较两个对象并获得它们差异的键值对?

java - bouncy caSTLe 相当于 openssl pkcs10 证书签名命令