为了账号安全,请及时绑定邮箱和手机立即绑定

即使返回结果,结果在 AnuglarJS 中也未定义

即使返回结果,结果在 AnuglarJS 中也未定义

慕码人2483693 2022-01-01 20:39:47
我需要从上面的操作接收值,该操作使用 HTML 表单从用户收集数据并将其传递给外部 JavaScript 文件,该文件在处理这些值后返回一个字符串。这个 JavaScript 文件已经用 Babel 转译为 ES6 的一个包,它使用 Promise 来处理值并返回字符串结果。现在,我曾经.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 不够精通。谢谢!
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

您应该从最后一个 .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;

  });

}


查看完整回答
反对 回复 2022-01-01
  • 1 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信