javascript - 无法捕获打字稿方法的结果
问题描述
我正在调用createUser(....)
如下函数
let response= this.createUser(email,false,"+"+phoneNumber,password,displayName,false);
这就是功能。
createUser(email:string, emailVerified:boolean, phoneNumber:string, password:string, displayName:string, disabled:boolean ) {
admin.createUser({
email: email,
emailVerified: emailVerified,
phoneNumber: phoneNumber,
password: password,
displayName: displayName,
disabled: disabled
})
.then(function(userRecord) {
// See the UserRecord reference doc for the contents of userRecord.
console.log("Successfully created new user:", userRecord.uid);
return Promise.resolve(userRecord);
})
.catch(function(error) {
console.log("Error creating new user:", error);
return Promise.reject;
});
return null;
}
但我想捕获在该方法的一部分下createUser
创建的返回结果。then
如何捕获其结果,即变量async
调用?response
解决方案
createUser
首先,您需要像这样在函数内部返回:
// ...
function createUser( /*params omitted*/ ) {
return admin.createUser({ // <-- notice the return here
// ...
})
.then(function(userRecord) {
//...
return Promise.resolve(userRecord);
})
.catch(function(error) {
// ... remember return the error data too
});
// return null;
}
// ...
现在你可以得到这样的结果:
1.在async
函数内部使用await
:
async function getValue() {
let response = await this.createUser( /*params*/ );
}
演示:
function resolveAfter2Seconds() {
return new Promise(resolve => {
setTimeout(() => {
resolve("sample data after 1 second");
}, 1000);
});
}
async function f1() {
var x = await resolveAfter2Seconds();
console.log(x);
}
f1();
2.在常规函数内部使用回调内部then
表达式(来自Promise.resolve):
function getValue() {
this.createUser( /*params*/ ).then(function(userRecord) {
let response = userRecord;
});
}
演示:
function resolveAfter2Seconds() {
return new Promise(resolve => {
setTimeout(() => {
resolve("sample data after 1 second");
}, 1000);
});
}
function f1() {
resolveAfter2Seconds(10).then(function(sampleData) {
console.log(sampleData);
});
}
f1();
推荐阅读
- c++ - 在 GCC-7 中使用功能测试宏
- javascript - React:渲染大图像和放大
- javascript - Java Script Function 对于特定的正则表达式运行良好,但在另一个正则表达式中无法正常运行
- c# - 使用查找集合的 IValueConverter
- c# - Azure 函数 httpclient ObjectDisposedException 无法访问已处置的对象 SslStream
- excel - 无法工作簿。打开 XLS 文件类型?
- google-sheets - 如何创建一个公式来对一列中的值求和,但将这些值乘以另一列?
- c# - 如何将此解密合并到我的代码中,将散列密码转换回原始密码
- swift - 界面生成器中具有动态类型的自定义字体
- excel - for循环中的条件语句