异步函数通过并发执行任务来实现非阻塞处理,返回代表操作结果的 Promise。然而,当在没有适当处理的情况下执行时,异步函数可能会产生 Promise {
在提供的代码片段中,AuthUser 函数返回一个代表 google.login 函数结果的 Promise。但是,随后在 userToken = AuthUser(data) 中对 AuthUser 的调用会导致未解决的 Promise,因为没有使用回调来处理其解析。
要捕获 Promise 的结果, .then 或 .catch 方法必须附加到 Promise 中。这些方法允许您分别处理 Promise 的解析或拒绝。
以下修改在回调中捕获 userToken Promise 的值:
let userToken = AuthUser(data); userToken.then(function(result) { console.log(result); // "Some User token" });
Promise 本质上是具有前瞻性的。一旦解决,结果就会传递给 .then 或 .catch 处理程序,无论 Promise 的当前状态如何。下面的 .then 处理程序将始终接收前面 .then 中返回的链式 Promise 的解析值。
返回值:
initPromise() .then(function(result) { console.log(result); // "initResolve" return "normalReturn"; }) .then(function(result) { console.log(result); // "normalReturn" });
Promise链接:
initPromise() .then(function(result) { console.log(result); // "initResolve" return new Promise(function(resolve, reject) { setTimeout(function() { resolve("secondPromise"); }, 1000) }) }) .then(function(result) { console.log(result); // "secondPromise" });
通过遵守这些原则,您可以有效地处理异步操作并捕获其解析值。
以上是如何有效处理异步 JavaScript 中的 Promise 解析?的详细内容。更多信息请关注PHP中文网其他相关文章!