我正在学习Promise,为了理解它我读了一些关于JavaScript的事件循环.此文章简要介绍了事件循环的工作,如调用堆栈,事件表和消息队列.
但我不知道调用堆栈如何处理包含'return'的行,以及之后会发生什么.下面是我写的一个例子,希望了解Promise如何基于事件循环工作.如果你想试一试,请参阅http://jsbin.com/puqogulani/edit?js,console.
var p1 = new Promise(
function(resolve, reject){
resolve(0);
});
p1.then(function(val){
console.log(val);
p1.then(function(){
console.log("1.1.1");
p1.then(function(){
console.log("1.1.2");
p1.then(function(){
console.log("1.1.3");
});
});
});
p1.then(function(){
console.log("1.2");
})
return 30;
//return new Promise(function(resolve, reject){
// resolve(30);
//});
})
.then(function(val){
console.log(val/2);
});
p1.then(function(){
console.log("2.1");
});
console.log("Start");
Run Code Online (Sandbox Code Playgroud)
可以看出,有两个"返回",使用它们中的每一个都会给出不同的输出顺序.具体来说,使用时return 30;,1.1.2, 1.1.3都是经过15,但使用的时候return new Promise(...),1.1.2, 1.1.3是前15.那么当代码达到两个不同的"返回"时究竟发生了什么?
在下面的代码中:
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css">
<span class="d-inline" style="border: 1px red solid; padding: 3px 0"><span>asbbb</span></span>
<span class="d-inline-block ml-2" style="border: 1px blue solid; padding: 3px 0;"><span>inline-block</span></span>
<div>
<br/>
<span class="d-inline badge" style="border: 1px red solid"><span>asbbb</span></span>
<span class="d-inline-block badge ml-2" style="border: 1px blue solid"><span>inline-block</span></span>
</div>Run Code Online (Sandbox Code Playgroud)
inline我创建了两条线来显示同一行之间和inline-block同一行中的高度差。
第一行显示inline-block比兄弟姐妹高一点inline。
在第二行中,我badge向两者添加了引导类,它显示inline元素比其同级元素要高一些inline-block。
对于这两行,我可以从 DevTools 中看到内部span具有相同的高度,但它们最终与父容器具有不同的高度。
我想知道这两种类型的高度display是如何计算的?
我正在学习ASP.NET核心MVC.我对使用@Model.NavigationProperty.SubProperty和@Html.DisplayFor(modelItem=>modelItem.NavigationProperty.SubProperty访问导航属性之间的区别感到困惑.详情如下.
我有两个实体Bag和Category是FK in Bag.
public class Bag
{
public int BagID { get; set; }
[Required,Display(Name ="Bag Name")]
public string BagName { get; set; }
[Required]
[DisplayFormat(DataFormatString = "{0:C}")]
public decimal Price { get; set; }
public string Description { get; set; }
[Display(Name ="Image")]
public string ImagePath { get; set; }
[Required]
public int CategoryID { get; set; }
[Required]
public int SupplierID { get; set; }
public ICollection<OrderItem> OrderItems { get; set; }
public …Run Code Online (Sandbox Code Playgroud) asp.net-core ×1
asp.net-mvc ×1
c# ×1
callstack ×1
css ×1
event-loop ×1
html ×1
javascript ×1
razor ×1