Еще один подход к возврату значения из асинхронной функции - передать объект, который сохранит результат от асинхронной функции.
Вот пример того же:
var async = require("async");
// This wires up result back to the caller
var result = {};
var asyncTasks = [];
asyncTasks.push(function(_callback){
// some asynchronous operation
$.ajax({
url: '...',
success: function(response) {
result.response = response;
_callback();
}
});
});
async.parallel(asyncTasks, function(){
// result is available after performing asynchronous operation
console.log(result)
console.log('Done');
});
Я использую объект result
для хранения значения во время асинхронной операции. Это позволяет получить результат даже после асинхронного задания.
Я использую этот подход много. Мне было бы интересно узнать, насколько хорошо этот подход работает, когда задействован результат обратно через последовательные модули.
CompareTo игнорирует определенные символы:
static void Main(string[] args)
{
var a = "asdas"+(char)847;//add a hidden character
var b = "asdas";
Console.WriteLine(a.Equals(b)); //false
Console.WriteLine(a.CompareTo(b)); //0
Console.WriteLine(a.Length); //6
Console.WriteLine(b.Length); //5
//watch window shows both a and b as "asdas"
}
(Здесь символ, добавленный к a
, - U+034F
, Объединение Grapheme Joiner.)
[/g1]
Результат CompareTo не является хорошим индикатором ошибки в Equals. Наиболее вероятной причиной вашей проблемы являются скрытые символы. Вы можете проверить длину, чтобы быть уверенным.
Для получения дополнительной информации см. этот .
Вы можете попробовать использовать перегрузку String.Equals
, которая принимает параметр типа StringComparison
. Например:
myCert.Thumbprint.Equals(certificateThumbprint, StringComparison.[SomeEnumeration])
Где [SomeEnumeration]
заменяется одной из следующих перечисленных констант:
- CurrentCulture
- CurrentCultureIgnoreCase
- InvariantCulture
- InvariantCultureIgnoreCase
- Ordinal
- OrdinalIgnoreCase
Ссылка на документацию MSDN найдена здесь здесь . [/g2]
Иногда, когда мы вставляем данные в базу данных, он хранит пробелы типа «вопрос». И когда вы попытаетесь сравнить его с «вопросом», он вернет false. Поэтому мое предложение: проверьте значение в базе данных или используйте метод Trim ().
В вашем случае попробуйте: mycert.Thumbprint! = Null & amp; & amp; & amp; & amp; & amp; mycert.Thumbprint.trim (). equals (certificateThumbprint.trim ())
Я думаю, что он вернет true, если какая-либо запись будет существовать.