我正在尝试编写一个返回promise的函数.但有时候请求的信息是立即可用的.我想将它包装在一个承诺中,以便消费者不需要做出决定.
function getSomething(id) {
if (Cache[id]) {
var deferred = $q.defer();
deferred.resolve(Cache[id]); // <-- Can I do this?
return deferred.promise;
} else {
return $http.get('/someUrl', {id:id});
}
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
somethingService.getSomething(5).then(function(thing) {
alert(thing);
});
Run Code Online (Sandbox Code Playgroud)
问题是回调不会针对预解析的承诺执行.这是合法的事吗?有没有更好的方法来处理这种情况?
我正在使用Ionic平台的SQLStorage.remove函数返回一个promise.在我的代码中,我需要删除多个值.当这些都完成后,我需要执行一些代码.
我如何等待所有这些然后执行回调函数?
码:
removeAll() {
this.storage.remove(key1);
this.storage.remove(key2);
this.storage.remove(key3);
}
Run Code Online (Sandbox Code Playgroud)
嵌套所有是一个坏习惯,所以我正在寻找一个体面的解决方案:)
removeAll() {
return this.storage.remove(key1).then(() => {
this.storage.remove(key2).then(() => {
this.storage.remove(key3);
});
});
};
Run Code Online (Sandbox Code Playgroud) 在React中,我编写了一个无状态功能组件,现在想要为它添加Prop Type验证.
List 零件:
import React from 'react';
import PropTypes from 'prop-types';
function List(props) {
const todos = props.todos.map((todo, index) => (<li key={index}>{todo}</li>));
return (<ul></ul>);
}
List.PropTypes = {
todos: PropTypes.array.isRequired,
};
export default List;
Run Code Online (Sandbox Code Playgroud)
App组件,渲染List:
import React from 'react';
import List from './List';
class App extends React.Component {
constructor() {
super();
this.state = {
todos: '',
};
}
render() {
return (<List todos={this.state.todos} />);
}
}
export default App;
Run Code Online (Sandbox Code Playgroud)
正如你所看到的App,我正在传递this.state.todos给你List.既然 …
我在JavaScript中寻找一个不存在的修剪函数,Googling上的一些代码建议使用:
function trimStr(str) {
return str.replace(/^\s+|\s+$/g, '');
}
Run Code Online (Sandbox Code Playgroud)
我想知道它是如何str.replace(/^\s+|\s+$/g, '')
工作的.我知道这是某种形式的正则表达,但不知道它在做什么.
我正在尝试在我的Android应用程序中编写删除用户方法,但每次执行它时都会遇到一些问题.当用户按下活动上的删除帐户按钮时,将执行此方法.我的应用与FirebaseUI Auth配合使用.
这是方法:
private void deleteAccount() {
Log.d(TAG, "ingreso a deleteAccount");
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
final FirebaseUser currentUser = firebaseAuth.getCurrentUser();
currentUser.delete().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG,"OK! Works fine!");
startActivity(new Intent(Main3WelcomeActivity.this, Main3Activity.class));
finish();
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e(TAG,"Ocurrio un error durante la eliminación del usuario", e);
}
});
}
Run Code Online (Sandbox Code Playgroud)
1)当我执行该功能时,屏幕上会出现一个Smart Lock消息,用户再次登录.以下是此消息的屏幕截图.
2)在其他情况下,当用户登录很长时间时,该函数抛出一个Exception,如下所示:
06-30 00:01:26.672 11152-11152/com.devpicon.android.firebasesamples E/Main3WelcomeActivity: Ocurrio un error durante la …Run Code Online (Sandbox Code Playgroud) android firebase-authentication firebase-realtime-database firebaseui
我想知道对比度拉伸和直方图均衡之间的区别.
我已经尝试过使用OpenCV并观察结果,但我仍然没有理解这两种技术之间的主要区别.洞察力将是非常需要的帮助.
我有一个非常简单的AngularJS模板,我正在尝试让路由工作,但是当我加载页面时,我只是看到了我的H1标签index.html.
我的应用程序位于子目录中/angular-route/,并且我知道部分存在,我可以访问/angular-route/partials/interest.html并且页面呈现正常.
我错过了一些非常基本的东西吗?
<html>
<head ng-app="myApp">
<title>AngularJS Routing</title>
<base href="/angular-route/" />
</head>
<body>
<h1>AngularJS Routing</h1>
<div ng-view></div>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script>
<script>
'use strict';
var myApp = angular.module('myApp', []).
config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/interest', {
templateUrl: 'partials/interest.html',
controller: 'InterestCtrl'
}).
when('/catalogue', {
templateUrl: 'partials/catalogue.html',
controller: 'CatalogueCtrl'
}).
otherwise({redirectTo: '/interest'});
}]);
myApp.controller('InterestCtrl', function($scope, $routeParams) {
console.log('InterestCtrl');
});
myApp.controller('CatalogueCtrl', function($scope, $routeParams) {
console.log('CatalogueCtrl');
});
</script>
Run Code Online (Sandbox Code Playgroud)
我正在使用Bootstrap + Bootstro,但无法使顶部导航栏落后于叠加层.
http://jsfiddle.net/NJsYw/5/(点击教程)
<div id="wrap">
<!-- Fixed navbar -->
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="brand" href="#">Project name</a>
<div class="nav-collapse collapse">
<ul class="nav">
<li><a href="#" id='tutorial'>Tutorial</a></li>
</ul>
</li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<!-- Begin page content -->
<div class="container">
<div class="page-header">
</div>
<p class="lead bootstro" data-bootstro-title='Title' data-bootstro-content="Description." data-bootstro-width="400px" data-bootstro-placement='bottom' data-bootstro-step='0'>Pin a fixed-height footer to the bottom of the viewport in desktop …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用布局将表导出到Excel.我发现了很多关于xlsx包的信息以及如何使用它但是我的脚本仍然有问题.
我不知道如何用颜色填充单元格,而不修改以前添加的边框.
作为一个例子,我创建了一个表(Test.txt),我想为列"Mass1"的单元格着色,其值大于30.
这是我写的脚本:
library(xlsx)
Test<-read.table("Test.txt",sep="\t", dec=".", header = TRUE)
wb<-createWorkbook()
sheet <- createSheet(wb, "Sheet 1")
cs1 <- CellStyle(wb) + Alignment(horizontal="ALIGN_CENTER", vertical="VERTICAL_CENTER") + Border(color="black", position=c("TOP", "RIGHT" , "LEFT","BOTTOM"),pen=c("BORDER_MEDIUM","BORDER_MEDIUM","BORDER_MEDIUM","BORDER_MEDIUM"))
cs2 <- CellStyle(wb) + Border(color="black", position=c("LEFT","RIGHT","TOP", "BOTTOM"),pen=c("BORDER_THIN","BORDER_THIN","BORDER_THIN","BORDER_THIN"))
addDataFrame(Test, sheet, row.names = F, colnamesStyle=cs1, colStyle=list(`1`=cs2, `2`=cs2, `3`=cs2))
for(i in 1:nrow(Test) ){
if(Test[i,2]>30){
Row<-getRows(sheet, rowIndex=(i+1))
Cell<-getCells(Row,colIndex = 2)
cs3<- CellStyle(wb) + Fill(foregroundColor="lightblue", backgroundColor="lightblue", pattern="SOLID_FOREGROUND")
setCellStyle(Cell[[1]], cs3)
}
}
saveWorkbook(wb, "Test.xlsx")
Run Code Online (Sandbox Code Playgroud)
我的麻烦是细胞正确着色但底部边框消失.我知道我可以在我的cs3样式中添加边框,但在我的真实脚本中,我的彩色单元格的底部边框并不总是相同的(有些是薄的,有些是中等的).
如何在不修改这些边框的情况下考虑先前创建的边框以添加填充颜色?我想getCellStyle函数可以帮助但是当我应用这个函数时,结果是"正式类jobjref"而不是"8列表",因为我的cs3样式...
我是angular 4.x的新手,我想在ngOnInit()函数中加载change.js。我该怎么做,我尝试了几件事,但没有成功:
这是我的代码:
import { Component, OnInit, Input } from '@angular/core';
...
.....
declare var chance: any;
import 'src/assets/js/chance.js';
....
....
export class ComposantComponent implements OnInit {
....
....
ngOnInit() {
this.http.get("src/app/datas/data.json")
.subscribe((data)=> {
setTimeout(()=> {
this.data = data.json();
this.data.forEach(function(row, index) {
row.checked = false;
// use chance here ...
});
console.log(this.data[0]);
// console.log(chance);
}, 500);
});
}
....
....
....
}
Run Code Online (Sandbox Code Playgroud)
你能帮忙吗?