首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步承诺,然后()

问异步承诺,然后()
EN

Stack Overflow用户
提问于 2017-09-09 17:07:53
回答 1查看 169关注 0票数 0

我正在浏览链接WebExtension。我无法理解choose_beast.js脚本中的关键字the ()。我知道这与javascript中的承诺有关。你能在这种情况下用简单的语言解释承诺和使用吗?

EN

回答 1

Stack Overflow用户

发布于 2017-09-11 05:19:44

让我们比较同步和异步代码。

查看一个正常的同步代码:

代码语言:javascript
复制
let a = Date.now();
let b = a * 3;

a是在设置b之前设置的,并可用于下一行。

查看异步代码:

代码语言:javascript
复制
let a = someAsyncFuntion();
let b = a * 3; // runs into error

在设置a之前没有设置b,并且下一行不能使用它,因此会导致错误。

当下一个进程可用时,将排队运行someAsyncFuntion()。解析器移到let b = a * 3;,但是这里还没有设置a,因此会出现错误。

我简单地说,为了保证这个函数是异步运行的。因此,then()是当它做了它。

查看上面页面中的示例:

代码语言:javascript
复制
var gettingActiveTab = browser.tabs.query({active: true, currentWindow: true}); 
gettingActiveTab.then((tabs) => { browser.tabs.sendMessage(tabs[0].id, {beastURL: chosenBeastURL}); });

browser.tabs.query()不会立即运行,也不会立即获得结果。因此,我们编写代码,以便当它得到结果时,then()会做一些事情。

代码语言:javascript
复制
// query tabs asynchronously
var gettingActiveTab = browser.tabs.query({.....});

// once got the result THEN do something 
gettingActiveTab.then( /* do something */ );

我希望这能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46133097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档